Inspiration
Across low-resource settings in Sub-Saharan Africa, South Asia, and Southeast Asia, maternal and child mortality rates remain high due to a single, preventable barrier: lack of access to consistent health guidance. Health workers operate in areas with unreliable internet. Mothers miss critical vaccination windows. Nutrition advice never reaches the people who need it most. FirstLight was built to address this gap directly by putting structured, reliable health guidance in the hands of frontline workers and caregivers, regardless of connectivity.
What It Does
FirstLight is an offline-first maternal and child health platform designed for low-resource clinical and community settings. It provides: Pregnancy Tracking -- Users log and monitor pregnancies from conception through delivery. The app calculates gestational age, trimester, and due dates automatically, and surfaces week-by-week advice and milestone information tailored to the current stage of pregnancy. Vaccination Scheduling -- Children are tracked against a WHO-aligned vaccination schedule. The app calculates each child's age in months and marks each vaccine as completed, upcoming, or overdue, giving caregivers a clear, actionable view of what needs to happen next. Nutrition Guidance -- Targeted nutrition recommendations are served based on context, distinguishing between pregnancy and breastfeeding phases, so users always receive relevant, stage-appropriate guidance. Health Timeline -- A persistent, date-sorted health timeline logs all significant events for each patient, giving health workers a longitudinal view of care history. Multilingual Support -- The interface supports eight languages: English, Spanish, French, Hindi, Indonesian, Arabic, Swahili, and Mandarin, making it accessible to a genuinely global user base. Offline-First Architecture -- All core data persists locally using IndexedDB. The app is fully functional without any internet connection, and syncs when connectivity is restored.
How We Built It
Frontend: React with Vite, authored in TypeScript, styled with Tailwind CSS. UI primitives are built on Radix UI for accessibility and composability. Motion is used for transitions. Backend: Node.js with Express, bundled for production using esbuild. The server entry point compiles from TypeScript at build time.
Persistence:
IndexedDB (via a custom DatabaseManager) handles all domain data: pregnancies, children, timeline events, and settings, under the database name FirstLightDB. LocalStorage handles user preferences and sync state: language, theme, notification toggles, offline mode flag, and last sync timestamp.
Domain Logic: All health calculations live in client/src/lib/utils.ts, including due date computation, gestational week and trimester derivation, age-in-months, vaccination status logic, BMI calculation, and WHO-aligned static reference data. Internationalization: A custom i18n system in client/src/lib/translations.ts maps a Language union type (en | es | fr | hi | id | ar | sw | zh) to a full nested translation dictionary, consumed via React context. Tooling: pnpm for package management, Vitest for testing, Prettier for formatting, and TypeScript strict mode throughout.
Challenges We Ran Into
Building a reliable offline-first experience required careful design of the IndexedDB layer to handle all CRUD operations, data export and import, and cross-store clearing without ever assuming a network connection. Vaccination and pregnancy logic had to be precise: a missed vaccination window or incorrect gestational week calculation has real clinical consequences, so all date math was carefully tested against WHO guidelines. Supporting eight languages, including right-to-left scripts like Arabic, also required thoughtful layout decisions throughout the UI.
Accomplishments We Are Proud Of
A fully functional offline-first data layer that requires no backend connection for any core workflow A WHO-aligned vaccination schedule with real-time status calculation per child Eight-language support built on a clean, extensible i18n architecture A modular, well-typed TypeScript codebase structured for long-term maintainability A UI that works on low-end mobile hardware in bandwidth-constrained environments
What We Learned
Designing for offline-first forces a fundamentally different mental model from standard web development. Every data operation has to assume no connectivity. Sync state has to be explicit and observable. We also learned how much precision matters in health domains: even small errors in date calculations, vaccination schedules, or nutrition guidance have outsized consequences for the people relying on the tool.
What Is Next for FirstLight
Nurse and community health worker role accounts with differential access controls Push notifications for upcoming and overdue vaccination reminders Cloud sync with conflict resolution for multi-device households SMS-based data entry for feature phones with no app access Integration with national health registries where data-sharing agreements exist Expanded language support based on deployment region feedback
Built With
react vite typescript node.js express tailwind-css indexeddb radix-ui vitest pnpm esbuild zod embla-carousel google-maps-api i18n
Log in or sign up for Devpost to join the conversation.