Shared architecture across web and mobile at an early-stage nonprofit
Senior Engineer, Mobile & Frontend Lead · Olympiah · 2025
Problem
An early-stage nonprofit startup had a product built by an outside agency and no in-house engineering workflow to inherit it with. What the team knew about the system lived in scattered Slack threads rather than anywhere durable, and the React and React Native codebases were drifting apart — the same ideas implemented twice, differently, by whoever touched them last. Every new hire would have to reconstruct all of it from conversation.
My role
I was the mobile and frontend lead: hands-on development while setting engineering direction for the organization. I partnered with the CEO and the founding team on the technical roadmap and engineering strategy, and I recruited and mentored engineers across experience levels — which in a startup this size means the practices I established were the practices, not a proposal to a larger platform group.
What I owned
Standardizing architecture across the React and React Native codebases, and a shared UI architecture supporting both web and mobile surfaces. The transition from agency-built systems to in-house engineering workflows, including Docker-based local development environments so setup was the same for everyone. CI/CD pipelines on GitHub Actions and DigitalOcean with automated testing and linting, and the introduction of test-driven development. Jira-based tracking, formal onboarding, and centralized documentation to replace Slack tribal knowledge. Analytics and monitoring, so production behavior was observable rather than reported.
Key decision
I invested early in a shared UI architecture across web and mobile rather than letting each codebase evolve on its own. It cost more upfront: designing the shared layer is slower than writing whatever each surface needs today, and it constrains both platforms to a common shape. The alternative was a small team maintaining two divergent design systems indefinitely, which is a cost that compounds every time a screen changes — so I took the upfront design work instead.
Result
CI/CD with automated quality gates cut build failures by about 50% and deployment time by about 40%, and release frequency went up accordingly. The codebase moved from agency dependency to in-house ownership, with documented practices and an onboarding path that no longer depended on someone remembering the right Slack thread.
- Technical leadership
- Shared web/mobile architecture
- CI/CD automation
- Test-driven development
- Mentorship
Built with: React · React Native · TypeScript · GitHub Actions · DigitalOcean · Docker · Jira