LifeOS · Swift and TypeScript · private, on TestFlight

The app I run my own life on.

Tasks, habits, goals, calendar, travel and health in one place, as a native iOS app and a web app. The iPhone screenshots are from my own phone. The web screenshots use demo data.

What it does

iPhone watchlist of films with poster art and a Mark Watched button on each
The watchlist on iPhone, with tabs for TV, films, books and games.
iPhone month calendar with coloured dots under the days that have events, and the selected day's activity listed below
The month on iPhone. Each dot is an event, task or activity.
iPhone sports screen listing today's baseball and football games with start times and channels
Today's games, with start times and channels.
Trip page for a week in Lisbon, with a flight and a hotel booking laid out on a timeline
Travel. Forward a booking email and an AI parser turns it into a flight, hotel or activity on the trip's timeline.
Week calendar with events, colour-keyed by tasks, activities, goals, journal and sports
Calendar. It syncs with Google Calendar and puts tasks, activities and goals on the same week.
Task list for today with categories and projects in a sidebar
Tasks, with categories, projects, scheduling and recurring items.
Grid of books read, each with a cover and a star rating
Books, films, TV and games, with imports from Goodreads and Steam.

It also pulls activity data from Strava and Oura, and has a search across everything.

Why I built it

I hated opening a pile of different apps to run my life. I wanted one place for all of it, so in December 2025 I started building one.

It has also been my test bed. Most of what I know about building software with AI agents, and about checking their work, I learned by building LifeOS that way.

How it is built

  • iOSNative Swift and SwiftUI
  • WebReact on a NestJS GraphQL API
  • DataPostgres with Prisma, on Google Cloud
  • 1,000+Commits across the two codebases
  • The AI features have a daily spending cap, so a bug cannot run up a bill.
  • Third-party tokens are encrypted, and admin functions sit behind their own gate.
  • Each change ships as its own reviewed pull request.

The code is private because the app holds my own data. The iOS app is distributed through TestFlight.