I led the design and implementation of a cross-platform desktop application for a large non-profit NGO.
Working in a small, dynamic team managing several apps and websites, I served as the lead developer on this ambitious project.
What I Had To Do
- Multilingual document browsing and search with stemming and linguistic rules
- Full RTL/LTR and translation support across multiple languages
- Advanced search capabilities, including fuzzy search, author and metadata filters, and inclusive/exclusive keyword queries
- Automated updates for new documents and translations, with live index refresh
- Offline functionality with background sync when online
- Cross-platform support for Windows, macOS, and Linux
The app was built using Electron, React, TypeScript, and Elasticsearch.
Core Infrastructure and Tooling
Before development began, I created a robust foundation:
- Migrated legacy XHTML content into a multi-language AST format (based on the unist spec) for easy parsing and rendering
- Built a custom Node.js indexer to configure Elasticsearch and handle linguistic indexing across languages
- Developed a lightweight CMS for document editing and translation management, publishing to S3 and triggering re-indexing automatically
Desktop App Implementation
- Implemented data synchronization for documents and translations
- Enabled offline search with an embedded Elasticsearch instance and bundled JVM per platform
- Created a rich document viewer capable of rendering the custom AST format with RTL and LTR support
- Designed a filterable search interface for complex query combinations
DevOps and Deployment
After the MVP launch, I focused on deployment and user feedback:
- Automated cross-platform builds and releases via GitHub Actions (Windows, Mac, Linux)
- Contributed upstream fixes to
electron-builder for JRE notarization
- Integrated Sentry for crash reporting and analytics
- Ran a beta testing program with direct user feedback loops
Security
In collaboration with Trend Micro and UC Berkeley researchers, I led threat modeling and penetration testing, which resulted in:
- Hardened update process with additional signature validation
- Added static security analysis to CI
- Refactored main/renderer code for process isolation, replacing IPC with long-polling HTTP where possible
Additional Contributions
Beyond this project, I also:
- Maintained and developed other organizational apps, including an 8-language global news website
- Migrated the organization from GitLab to GitHub, including CI/CD setup, org structure, and permissions
During this time, I also began contributing to open source, visible on my GitHub activity heat map.
All in all, this was one of the most challenging and rewarding projects I’ve ever led.