Life OS
A personal productivity app - tasks, meetings, notes and calendar in one surface - installable as a PWA across Mac, iPhone, iPad and Watch, all sharing one database, plus a native companion app.
- Type
- Personal Project · Full-Stack / AI
- Year
- 2025–now
- Role
- Sole developer - from data model to deployment.
One shared logic layer serves the web app and a native companion; a two-stage capture stores raw input before any AI call, so nothing is lost on failure and normal capture costs nothing.
- One database across Mac, iPhone, iPad & Watch
- Shared @lifeos/core for web + native
- Custom timezone-safe recurrence engine
The problem
Keeping tasks, meetings, notes and a calendar in separate apps means constant context-switching and no single view of the day - and a free Apple Developer account can't sync a native app across devices.
One installable app that works on Mac, iPhone, iPad and Watch from a single database, with a native companion sharing the same logic.
What I did
- Built a monorepo with a shared @lifeos/core package so the web server actions and the native app run the same logic.
- Wrote a custom recurrence engine to get repetition and reminders right across time zones and daylight saving, instead of leaning on a third-party library.
- Designed a two-stage capture: raw text is persisted before the AI model is called, and the model only runs when deterministic rules are uncertain.
Outcome
A working PWA installed across all my devices plus a native companion, with session-JWT auth for web and app, cron-based reminders, and automated testing and deployment.
Stack
- Next.js 16
- React 19
- TypeScript
- Tailwind 4
- Drizzle ORM
- PostgreSQL (Neon)
- Anthropic API
- Expo
- Vercel
