← All work

LifePlan

Your actual life, in one place. Calendar, tasks, training, food, friends and goals in one planner.

Year
2026
Role
Design & build
Scope
Concept, UX/UI, AI-assisted build
Status
In personal use
LifePlan desktop planner with a fictional user's week: task list tiles across the top, the calendar in the centre and the module dock below

Overview

My calendar lived in one app, my tasks in another, workouts in a third, meal plans in a note and the friends I kept meaning to see in my head. Each tool was fine on its own. None of them knew about the others, so the actual planning happened in my head too.

LifePlan brings them together. Google Calendar and Google Tasks stay the source of truth, and everything else (gym, meals, friends, a bucketlist and language practice) sits around the same week, so a training session, a dinner plan and a friend's birthday show up where I'm already planning.

  • One week view. Events, tasks and quick-add shortcuts on the same calendar.
  • No duplicate systems. Tasks stay in Google, so nothing lives only in LifePlan.
  • Built for daily use. An installed app on my phone and a planning canvas on desktop.

My role

Everything product-side: what to build, how it should work and look, and testing it on my own phone and desktop with my real data. The code was written with AI support, though I also manually refined snippets of code and styling.

Process

1. A canvas around the week

On desktop the calendar sits in the middle, task lists sit around it as tiles on a set of rings, and the bigger modules live in a dock underneath. Zoom moves the whole canvas so the calendar keeps its proportions, and lists can be grouped into small phone-style folders. Domain Mode keeps lists and accounts separate, while Time Mode merges them by when things are due.

The same planner in night mode
Night mode switches on automatically in an evening window.

2. Don't build a second task system

The most important decision was what not to build. Early versions had their own local tasks, which meant two places a task could live and two ways to lose one. I removed that: every actionable task is a Google task, and LifePlan only stores layout, extra metadata and an offline queue that syncs back when the connection returns. Several Google accounts can show side by side, but every edit goes to the account that owns the item.

3. Gym: from checklist to training log

The Gym section grew into the most developed part of the app, and it is designed mainly for the phone, since that is where it gets used. Workout templates (the plan) and dated sessions (what I actually did) are kept separate, so editing a template never rewrites history. Strength and cardio get different layouts: a lift needs reps and kilos, and a treadmill run needs minutes, distance and calories. It also has rest and set timers, comments that stay on their own session, and a history imported from two previous training apps.

Gym Move on a phone: today's session with a logged set and the rest timer running, fictional data
Move: log sets, with the last and best lifts beside each exercise.
Gym Plan on a phone: reps and sets for each exercise in the template
Plan: the template, kept apart from history.
Gym Track on a phone: training stats for the past month, fictional data
Track: volume and frequency over time.

That imported history turned out to be large enough to fill the browser's storage, which pushed sessions into their own database table. The newest addition, BioAnalysis, is an experimental tool for Olympic lifting videos. It estimates joint positions on the device, so the video never leaves the phone, and it's careful about what a 2D estimate can and can't tell you.

4. The rest of a week

Food plans the week's breakfasts, lunches and dinners from rules and ideas, and feeds both the shopping list and a smart Make Dinner shortcut. 'Friends' finds dates that work for both people from each calendar, with privacy being applied to each person's events or reasons for availability. It also sends (non-panicky) nudges when you haven't seen someone for a while.

Food planner with breakfast, lunch and a weekly dinner grid
Food: the week's meals from rules and ideas.
Friends calendar snapshot with free days and half days marked, fictional data
Friends: free days worked out from the calendar.

A big part of my daily to-do whilst I was building it involved learning Spanish, which my Italian mother was also doing, so I built a specific tool that helps us native Italian speakers learn the false friends and words that commonly catch us out. Active recall is essential, so I built it with text input rather than multiple choice style questions.

Poliglotta correcting a typed Spanish answer word by word
Poliglotta: typed answers, precise corrections.

The Bucketlist keeps longer-term plans out of the daily task list.

Bucketlist grouped into categories and groups, fictional items
Bucketlist: categories, groups and drag and drop.

5. Mobile is its own app

On a phone, LifePlan switches to one pane per section. Installed as an app, it remembers which section you were in, which allows you to use it as multiple separate apps if you wish to. This allowed me to keep developing it freely, as a flexible desktop and mobile web-app, rather than committing to a version to submit for Apple verification.

Mobile menu listing Calendar, Up Next, Lists, Friends, Poliglotta, Bucketlist, Meals and Gym
One menu, eight sections.
The week on a phone, split into morning and afternoon for each day
The calendar as a list of days.

6. AI with guard rails

LifePlan can export a structured, read-only snapshot (with a user-selected time range) of my tasks, calendar, meals and training for an external AI assistant. The assistant can send back proposed changes as JSON, which LifePlan checks, previews and lets me apply or undo one by one. This allows me to use AI optionally without deploying APIs, and always retain control of my data and what gets shared with AI.

Impact

400+commits since March 2026
8sections in one app
1source of truth for tasks

LifePlan runs as an installed app on my phone and in the browser on desktop, with my real calendars, tasks and training history behind it.

What I learned: after building Lifeplan, I never bought an app again. I felt like I'd unlocked the power to build anything in exactly the way that addresses the frustration I have with products available on the market. For example, having to press play and pause on a pause timer during a workout added friction for me. I would forget to do it. My app starts the timer the second I've logged the last set, and I can pause it manually or, if I just log the next set, it automatically stops the timer AND detracts the time it calculates that it would have taken me to do so (different exercises have different rep duration).