lifeOS.
Life-management app with an offline, on-device LLM.
problem
Most life-tracking apps either ship your personal data to a server or fall apart offline. I wanted habits, mood and spending tracking with an assistant whose LLM runs on the device itself — private by construction, and useful with no connection at all.
approach
The assistant's LLM runs on-device, so prompts and personal context never leave the phone. A Python gRPC backend over PostgreSQL (Alembic migrations) exposes auth, tasks, habits, mood and spending purely as a thin sync layer. The Expo / React Native client is offline-first: it batches changes and the server ingests them idempotently, so a re-sent batch never duplicates. JWT access/refresh auth; self-hosted CI/CD via GitHub Actions + PM2.
outcome
Working full-stack app — offline-first sync, dashboards, and an AI chat tab — built solo across backend and mobile.
stack rationale
- gRPC backendTyped contracts shared between the Python server and the TS client; one schema, no drift.
- Idempotent batch syncOffline-first means retries are normal. A stable id per change makes re-sending a batch safe — no duplicates.
full stack
- Python
- gRPC
- PostgreSQL
- Expo / React Native
- TypeScript
- on-device LLM