← all work

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

  1. Built a monorepo with a shared @lifeos/core package so the web server actions and the native app run the same logic.
  2. 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.
  3. 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
Next caseArt Desk

© Johan Stefanesback home

Get in touch
Still building this site