About the Role
You'll be one of 2–3 full-stack engineers on a five-person engineering team (alongside a QA engineer and a UI/UX engineer). You'll focus primarily on the mobile apps (rider and driver) and their supporting API endpoints, while also contributing to backend modules as needed. You'll work closely with the senior engineer on architecture and with the UI/UX engineer on translating designs into polished, performant screens.
You'll ship features end-to-end — from database schema to API endpoint to mobile screen. On a team this small, everyone touches everything, but your center of gravity will be the mobile apps and the rider/driver experience.
What You'll Work On
Mobile apps (primary focus):
- Rider app — booking flow (map, destination search, fare estimate, ride confirmation), real-time ride tracking, payment selection, rating screens, safety features (SOS, trip sharing)
- Driver app — ride request popup, navigation to pickup, ride completion, earnings dashboard, wallet (top-up, withdraw, transaction history), agent recruitment mode
- Shared packages — API client with auth interceptor, Socket.IO client, Zustand state stores, UI component library (NativeWind/Tailwind), i18n (French + English at launch for Douala; Cameroonian Pidgin shortly after; Lingala added when Kinshasa launches in Year 2)
- Offline behavior — caching, offline ride completion for cash payments, mutation queuing, reconnection recovery
Backend modules (secondary focus):
- Rider and driver profile CRUD, saved locations, trusted contacts
- Ride lifecycle endpoints (estimate, request, cancel, arrive, start, complete)
- Rating and feedback system
- Safety module (SOS alerts, trip sharing links, support tickets)
- Admin API endpoints for the operations dashboard
Cross-cutting:
- Expo Router file-based navigation for both apps
- TanStack Query for server state caching with MMKV persistence
- Socket.IO event handlers bridging real-time updates into Zustand stores
- Performance optimization for low-end Android devices (Tecno, Infinix, Itel — typically 2 GB RAM) under Douala's rolling power cuts — battery guardrails matter as much as memory guardrails
- Integration with Mapbox maps (@rnmapbox/maps), Google Places (proxied through backend), and Expo notifications
Requirements
- 2+ years of professional software engineering experience
- Proficiency in TypeScript/JavaScript
- Experience building mobile apps with React Native (Expo experience is a strong plus)
- Experience consuming REST APIs and working with backend code (Node.js preferred)
- Familiarity with relational databases (PostgreSQL preferred — you should be comfortable writing queries and understanding schemas)
- Familiarity with Git workflows (branching, pull requests, code review)
- Ability to translate UI designs (Figma) into clean, responsive mobile screens
- Attention to detail — pixel-level polish matters when the app is someone's daily commute tool
- Fluent English (written and verbal) — all code, documentation, and technical communication is in English
Nice to Have
- Experience with Expo SDK, Expo Router, and EAS Build
- Experience with state management libraries (Zustand, Redux, MobX)
- Experience with TanStack Query (React Query)
- Experience with Socket.IO or WebSocket-based real-time features
- Experience with map SDKs (Mapbox, Google Maps) in React Native
- Experience building for low-end Android devices and poor network conditions
- Experience with Fastify or Express (backend contribution)
- Experience with NativeWind or Tailwind CSS
- French language ability (helpful for user-facing strings and Douala context; Cameroon is officially bilingual, so English works too. Not required.)
What Matters More Than Your Resume
- You can build a complete feature from design to deployed screen — not just the frontend half or the backend half
- You care about performance on real devices, not just simulators
- You're comfortable asking questions when requirements are ambiguous rather than guessing
- You take ownership of your work — if your screen has a bug in production, you want to be the one who fixes it
- You're excited about building something that matters for a real community, not just another SaaS dashboard
Tech Stack
- Mobile apps — React Native + Expo SDK 55, Expo Router, TypeScript
- State management — Zustand (client state), TanStack Query (server state), MMKV (persistence)
- UI — NativeWind (Tailwind CSS for React Native), @gorhom/bottom-sheet, react-native-reanimated
- Maps — @rnmapbox/maps (map rendering, offline tiles), Google Places (destination search)
- Backend — TypeScript, Fastify, Node.js / Bun, Drizzle ORM
- Database — PostgreSQL + PostGIS
- Real-time — Socket.IO
- Payments — pawaPay: MTN MoMo and Orange Money in Douala; Vodacom M-Pesa, Airtel Money, and Orange Money added for Kinshasa in Year 2
- Infrastructure — Vultr Paris, Docker, Kamal, Cloudflare
- Monorepo — pnpm workspaces + Turborepo
- Code quality — Biome, TypeScript strict mode
- AI tooling — Claude Code (Pro plan provided for all engineers)
How We Work
- Small team, high ownership. Five engineers. No ticket factories. You own features end-to-end and see them through to production.
- Trunk-based development. Short-lived branches, frequent merges, fast code review (4-hour first-response target). PRs stay under 400 lines.
- One-week cycles. Plan Monday, ship Friday. Linear for tracking. No story points or estimation theater.
- Async-first. Slack, Linear, Loom. One 30-minute weekly video call. Technical decisions happen in public channels, not DMs.
- AI-assisted development. Claude Code (Pro plan) provided. Use it aggressively — but you must understand and be able to explain every line you submit. AI-generated code goes through the same review process as everything else.
- Pair programming for complex work. The senior engineer will pair with you on payment flows, matching logic, and other tricky subsystems. This is how knowledge transfers on a small team.
- Real-world testing from day one. QA in Douala tests on Tecno and Infinix phones over MTN/Orange 4G under ENEO load-shedding. You'll see exactly how your code performs in the target environment.
Compensation & Benefits
- Salary: Competitive, commensurate with experience
- Growth: You'll learn the full stack deeply — mobile, backend, real-time, payments, infrastructure. On a team this small, your scope expands fast.
- Impact: You're building the app that millions of Douala commuters will use to get to work, school, and home safely — and Kinshasa (18M people) will follow in Year 2. Features you build in week 4 will be used by real riders and drivers in week 14.
Apply for this role
Ready to join the team? Fill out the application form below and we'll be in touch.
Apply for Full-Stack Engineer
We review every application carefully. We'll be in touch within a week.