- Context
- Parents needed a calm way to log feeding, sleep, medicines, vaccinations, and growth without turning care into a surveillance product. An earlier web prototype on Firebase proved the concept but not the trust model. Constraint: keep the primary store on the device; any sync between parents must be optional and end-to-end encrypted; the app is a log, not advice.
- Intervention
-
Rebuilt as a native Expo / React Native + TypeScript app with Jest covering domain logic, then added tooling that keeps translation offline.
Phase 1 — Native app, local store
Shipped the tracker as a native mobile app. Core events (feeding, sleep, medicines, vaccinations, growth) live in local device storage so the day-to-day log works without depending on a cloud UI.
Phase 2 — Optional E2E sync between parents
Added an optional end-to-end encrypted sync path so two parents can share the same log when they choose to — without making sync the default store.
Phase 3 — Local PL→EN UI translation CLI
A separate CLI walks the UI strings and translates PL→EN with a local LLM via Ollama. Translation never goes through a cloud model.
- Risks & how they were handled
-
- Trust / privacy drift → local-first store; sync is optional and end-to-end encrypted.
- Domain bugs in care logs → Jest on domain logic before UI polish.
- Cloud lock-in for i18n → Ollama CLI keeps PL→EN translation on a local model.
- What I'd do differently
-
- Freeze the event schema earlier so sync payloads stay boring.
- Keep the translation CLI in the same monorepo CI path as the app from day one.
- Outcome
- Before: a Firebase web prototype that proved the feature set but not the privacy posture parents expect. After: a native Expo / React Native + TypeScript app with local storage, optional end-to-end encrypted sync between parents, Jest on domain logic, and a local Ollama CLI for PL→EN UI strings. Status: Coming soon to the App Store.
System map
Parent logs feeding or sleep
Saved locally on the phone
device storage
Encrypted sync (optional)
E2E
Keeps a day-to-day care log on the phone
Shares a private child history when parents opt in
UI in Polish and English
What shipped
- Native iPhone app Tracker for feeding, sleep, medicines, vaccinations, and growth — Expo / React Native + TypeScript.
- Parent-to-parent sync Optional end-to-end encrypted sync so two parents can share the same log.
- PL and EN interface UI strings translated with a local Ollama model — no cloud LLM for i18n.
Stack Expo React Native TypeScript Jest local storage E2E sync Ollama CLI