The design behind the working app: a personal life management system that is modular, automatable, and strictly isolated per user account.
01
Life OS is a single private workspace per person, split into seven modules that all feed one dashboard. The organising principle: every obligation has a date, an owner, and a single next action. Anything without those three is noise.
Stack: React + TanStack Start on the front, Lovable Cloud (Postgres, Auth, row-level security) on the back. Nothing sensitive is cached in the browser beyond your signed-in session.
02
-- applied to every table
alter table public.deadlines enable row level security;
create policy "owner only" on public.deadlines
for all to authenticated
using (auth.uid() = user_id)
with check (auth.uid() = user_id);03
04
profiles(id → auth user, display_name, timezone, created_at)
user_roles(id, user_id, role) -- roles isolated from profile
transactions(id, user_id, amount, direction, category, occurred_on, note)
bills(id, user_id, name, amount, category, frequency, next_due_date, autopay, notes)
properties(id, user_id, name, type, status, address,
estimated_value, monthly_income, notes)
ventures(id, user_id, name, stage, role, monthly_income, next_step, notes)
deadlines(id, user_id, title, category, due_date, priority,
remind_days_before, recurrence, completed_at, notes)
tasks(id, user_id, title, area, priority, due_date, done)Every table above has user_id, RLS enabled, an owner-only policy, and explicit grants to the authenticated role only — no anonymous read anywhere.
05
06
07
08
If you want to start smaller than the full app, this is the 20% that carries the load:
Everything else in this app is an expansion of those four. Add a module only when the existing one starts to feel cramped.