Build status

The app is built. The backend is landing in bricks.

This is the production Life Mastery web app: nearly the entire member app, the admin console, and the full public site run local-first on your data. Authentication is real (Clerk), the member spine syncs to Convex for signed-in members, subscriptions run on real Stripe checkout, Google Calendar syncs two-way (read of your primary calendar + opt-in push to the app-created calendar), and the AI gateway answers with real models for entitled members — the Coach and the in-app assists alike. It stays honest about its boundaries: what is not built yet (email, analytics, notifications delivery, native mobile) is labelled, not faked.

What exists today

Marketing site: full port

The complete public site at pixel parity with the v1.30 prototype: the landing at /, /pricing (live billing toggle, plan deep-links), /contact (the form reaches us directly — submissions store server-side and surface in the founder triage lens), and the member /help center (guides, FAQ, in-app support requests). Guarded by web:smoke-site in both themes.

In place

Auth: real (Clerk)

Real authentication via Clerk (backend foundation, brick 2). /sign-in and /sign-up create real accounts — passwordless email code, plus Google — inside the Life Mastery brand shell, themed to the design system in dark and light. /account is Clerk's real profile, security and connected-accounts management; the member chrome shows the signed-in user's real name, email and avatar. The fake passwordless-preview screens (check-inbox / welcome / sign-in-password / forgot-password / reset-password) were removed. Production runs its own Clerk instance on this domain with the project's own Google OAuth app.

In place

Data seam: the member spine syncs (Convex)

The Convex data seam (backend foundation, brick 3) is provisioned and carries real data for signed-in members. The full member spine synced on 2026-07-06: goals, habits and their daily check-offs, routines (plus the generation ledger), journal, notes, captures, review decisions, cross-object links, account-level preferences, the shared wisdom catalogs (Quotes, Affirmations, Stories, Academy courses) with per-member deltas, the five identity library deltas, the Wealth money system, Academy progress, Coach chat sessions, Vision-board layouts and their image bytes (Convex file storage), feedback reports and the Community layer — all validator- or quarantine-gated on ingest. Non-published catalog content is redacted server-side for non-admin readers. Signed-out or offline, the same surfaces run fully on local data; nothing blocks on the network.

In place

Payments: live (Stripe)

Real subscriptions (backend foundation, brick 4): Pro and Master, monthly or annual, through Stripe's hosted checkout and customer portal — no card data ever touches this app. Entitlements are enforced server-side (a client cannot forge a plan) and webhook fulfilment is idempotent and ordering-safe. Verified end to end in production with a real charge, refund and cancellation. Elite is invite-only: a founder grant (server-logged in the admin Members room) is the only path to it today.

In place

System pages

404 (wired as the real not-found page; unknown URLs get it — the old 'Planned' catch-all retired with the prototype), 500 (also the real error boundary), /access-denied, /maintenance, and /upgrade-required, all ported at parity.

In place

Goals: first ported module

The member Goals page at /goals: the full member shell (sidebar, topbar, coach dock), live local goals (create, edit, progress, complete, archive, delete, persisted in this browser), and the connected-system chips. Local-first; synced to your account when signed in.

In place

Habits: second ported module

Habits, Today at /habits and Habits, Manage at /hr-habits: live local habits (create, edit, pause, delete), per-day check-offs that persist in this browser, the habit drawer, and the two-way goal↔habit links on both the habit and goal cards; the ⌘K quick-add palette and the Make-into handoff are live. Local-first; habits and their check-offs sync to your account when signed in. A rename keeps your check history, and '3× per week' is a flexible weekly quota, not fixed days.

In place

Routines: third ported module

Routines at /hr-routines: live local routines (build, edit, pause, resume, delete) whose recurrence engine materialises real scheduled occurrences in the local store, with goal links shown on both the routine and goal cards. The Routine Detail page at /hr-routine and the full-screen runner at /hr-run are real: both open the routine you picked, the detail page edits and saves its step sequence, and running a step that is linked to a habit checks that habit off everywhere. Steps that are not linked to a habit are session-only progress, saved on this device. Adherence is counted only over the days a routine was actually scheduled. Local-first; routines sync to your account when signed in, and their scheduled blocks ride the two-way Google Calendar seam when you connect it. No reminders yet.

In place

Habits & Routines section: complete

The remaining six section tabs are ported: the Builder at /hr-builder (the five-step wizard creates a real local routine), the Calendar lens at /hr-schedule (a real timeline of routine occurrences, scheduled-habit occurrences and one-off blocks from the spine, with a lens toggle for all-events vs routines & habits; blocks you add are real local actions you can complete, move, skip or remove), and the Library, Insights, Reviews and Settings pages (/hr-library, where installing a template creates a real routine; /hr-insights and /hr-reviews, which derive their charts and figures from your own check-off history — anything the data could not support, such as a single composite score or a time-of-day breakdown, was removed rather than estimated; and /hr-settings, where the unbuilt services are marked Planned and the theme switch is real). Local-first; synced when signed in.

In place

Today (Dashboard): fourth ported module

Today at /dashboard: the live daily command center. Clock-driven greeting, the daily briefing (a live AI surface for entitled members; otherwise composed honestly from your local data), inbox + weekly-focus bar, today's agenda with real done/skip/pause, the season anchor, the focus-area card with one-tap goal/routine/action creation, life-area dials and Life Plan balance counted from your local objects, the Connected LifeOS view, the First-steps checklist, Recently applied, and the guided Life Snapshot setup that creates a real connected starting point (season, focus area, goal, routine, action, reflection, review prompt). Local-first; synced when signed in.

In place

Calendar: fifth ported module

Calendar at /calendar: Today / Week / Upcoming / Routines tabs rendered live from the local store, the schedule-block modal (a Repeat choice creates a real routine through the recurrence engine), capture-to-schedule triage, the shared routine editor, a real one-way .ics export of upcoming actions, the focus-area filter, and the coach planning previews whose approved suggestions become real local objects (clearly coach-stamped; the suggestions themselves are demo content, not AI). The Sync tab hosts the REAL Google Calendar connection: a read of your primary calendar into the in-app grid, plus an opt-in two-way push that writes your Life Mastery blocks to a dedicated app-created 'Life Mastery' calendar (never your own calendars) and reads your Google-side edits back.

In place

Notes & capture inbox: sixth ported module

Notes at /notes: the live capture inbox with REAL triage. File a capture to its home, turn a goal capture into a durable goal, save a reflection straight into the Journal, schedule a capture as a linked calendar action, toggle it into your next weekly review, link it to an existing goal, archive or delete, plus the read-only Filed & archived lifecycle view, all persisted in this browser. The All-notes library (list, collections, tags, pinned, linked views and the full block editor) runs on the durable notes store (see the Notes library entry below); captures and journal entries are durable too. The quick-capture drawer and hub capture on the Habits pages now write this same real inbox.

In place

Journal: seventh ported module

Journal at /journal and the full entry editor at /journal-entry: the quick reflection composer saves real local entries (with mood and life area), the Entries archive lists only your real entries (the 18 design specimens were deleted 2026-07-14), and the block editor autosaves durable entries (?new=1 starts one, ?id= re-opens it) with a real provenance footer: carry an entry into your weekly review, link it to a goal, or turn it into another object. Today's State frames a real check-in; the patterns and word cards are honestly labelled Planned. Private by default; synced to your account when signed in.

In place

Reviews: eighth ported module

Reviews at /reviews: the lock-in panel writes this week's focus + next action to the local spine (it surfaces on Today until you change it), Lock & schedule puts the next action on the calendar and records it as a committed review outcome, and the guided review flows (daily / weekly / monthly / quarterly / yearly) finish into stable local review decisions. The Decisions & outputs picker connects review outputs to real local objects: link a goal (with a review note saved on it), create or link a habit, save journal prompts as a real draft, send a lesson to the capture inbox, set the Life Plan focus area. 'For your next review' prompts carry a real lifecycle (schedule a follow-through → done → commit as evidence → handled), routine adherence and domain balance read live from your local data, and the Connected review snapshot maps identity → goals → habits read-only with carry-into-review hints. The mood/energy charts, principles, language and Wealth-review cards are the prototype's sample content, labelled as such. Local-first; review decisions sync when signed in.

In place

Identity & Inner World: ninth ported module

The full Identity family: the hub at /identity (live 'Identity in action' evidence read from your local data; the search, stats and inner-work cards are labelled samples), the seven library pages (/affirmations, /identity-beliefs, /identity-values, /identity-statements, /identity-emotions, /cognitive-biases, /identity-archetypes) plus /standards: the shared wisdom-library engine with its sample content labelled on every card, where Apply turns any item into a REAL local object through the shared Make-into flow and favourites persist. Identity Statements carry a real local write-side: create, edit, archive, restore and delete durable statements (deep-linked via ?focus=), listed above the samples. The Life Plan at /life-plan: live local counts, the editable season (+ focus area), Add-to-Review writing a real deduped weekly prompt, and the editable Life Plan foundation (vision, principles, season note, six area intentions, blueprint notes) whose saved text graduates onto the sample blueprint tabs. Local-first; the identity libraries' member deltas and the spine sync when signed in.

In place

AI Coach: tenth ported module

The Coach hub at /ai-coach (11 coaching modes, guided sessions, integrations map; the hero read derives live from your spine, recent sessions are your real sessions, and saved insights are a real durable store) and the full coaching workspace at /ai-coach-session: chat sessions saved in this browser and — when signed in — synced to your account across devices, mode switching, pinned/searchable history with an honest clear-chats control, Save insight, and Make into… / coach-plan Approvals that create REAL local objects (actions, captures, reflections, review prompts, all coach-stamped) through the shared Make-into flow. Send-to-Support files a real local ticket through the same Support OS state layer the admin pages use (channel 'coach', audit-logged; nothing is emailed or sent over a network). Insights hand-offs (?seed=) open the session in context. Replies are REAL for a signed-in Elite member: a server-owned model gateway (entitlement-gated, capped — default 50 replies/day, founder-tunable — metered per reply) answers with the member's consented context, and refusals render honestly (upgrade / cap / error). Signed out, on a local build, or without the entitlement, the Coach shows honest unavailable / upgrade states — never a canned reply pretending to be AI.

In place

AI gateway: live across the app

One server-owned, entitlement-gated, capped and metered model gateway serves the member AI surfaces beyond the Coach: capture assists, 'Make into…', quote and wisdom assists, the daily briefing, connect suggestions, and voice dictation (OpenAI transcription), plus three founder-only admin surfaces. Providers are founder-configured per surface (Anthropic or OpenAI); the privacy policy names both. A surface without a live server slice shows an honest not-live state.

In place

Google Calendar: two-way sync

Connect Google Calendar and the app reads your primary calendar (a bounded window, read-only scope) into the in-app grid. Turn on the optional push and your Life Mastery blocks write to a dedicated app-created 'Life Mastery' calendar — never your own calendars — with Google-side edits to those blocks syncing back. Disconnecting purges the mirror; turning push off removes the app calendar.

In place

Life-area families: eleventh ported module

All six life-area hubs (/health, /wealth, /mind, /purpose, /career, /relationships) and their complete sub-page families: 40 pages, including the full Wealth OS (Money, Debt, Growth, Investing, Protection, Setup, Goals, Metrics, Library). The markup is extracted verbatim from the prototype at port time, so the connected design surfaces are byte-faithful; their figures, scores and ledgers are the prototype's sample content, labelled on the pages. What runs REAL: the per-family quick-jump bars, the breadcrumb focus-area cue reading your live local focus, each hub's Connected strip (live goals/routines/actions for that area, Schedule-action into the real calendar, Set-as-focus-area, the Life Plan intention read live from your saved plan, prefilled add-goal/habit/note hand-offs), the Wealth modal/drawer engine with its locally-persisted view and privacy preferences, and the cross-area xlink pills. Local-first; the spine and the Wealth workspace sync when signed in.

In place

Wisdom & libraries: twelfth ported module

The Libraries hub at /libraries, the Wisdom hub at /wisdom, Quotes at /quotes (the full workspace: views, filters, detail reader, copy, and a per-quote Apply that turns a line into a real local reflection, routine, goal, scheduled action, capture or Coach hand-off), the Success Dictionary at /success-dictionary and Success Principles at /success-principles (filter rails with locally-persisted collapse, word/principle readers, the same real Apply path), plus /resources, /practices, /wisdom-book-notes, /wisdom-life-lessons and /wisdom-stories. The library content is the prototype's sample corpus, labelled on the cards; everything you APPLY from it becomes a real local object with honest 'From Quote/Story/…' provenance that reads back across the OS. The catalogs are real shared Convex catalogs with your personal changes synced; applied objects are local-first and sync when signed in.

In place

Academy: thirteenth ported module

The Academy at /academy (the program tree with locally-persisted collapse, units and progress: sample curriculum, labelled), the Catalog at /academy-catalog, and the Lesson reader at /lesson. The lesson content is the prototype's sample course; what runs REAL: 'Apply this lesson' and the three-actions exercise route through the shared Make-into flow into real local objects (goals, scheduled actions, routines, reflections, captures) stamped From Lesson, with the work scheduled from a lesson reading back on the page. Local-first; Academy progress syncs when signed in.

In place

Insights, Settings & account: fourteenth ported module

Insights folded into Reviews (/insights redirects there), Settings at /settings with REAL local-data controls: a working JSON backup export of this browser's data, a validated backup import that fully replaces the local store, live literal counts of what a backup holds, and the real reset to a clean workspace (LifeOS.clearAll) behind a confirm, plus theme and preference rows. Help at /help files real local support tickets through the same Support OS layer (channel 'in-app'; nothing is emailed or sent over a network), with the FAQ and guides as labelled content. Account is the real Clerk profile + a 30-day deletion-request path; Billing is the real Stripe checkout/portal seam; Notifications remains an honest preview (no notification system is live yet, and the page says so). Local-first; synced when signed in.

In place

⌘K Spotlight & dock tools: fifteenth ported module

The ⌘K search/jump palette (every nav destination plus quick actions, opening from the sidebar search, the top-bar field, the mobile search button and the keyboard) and the right dock's in-panel tools on every member page: Quick capture (REAL local captures routed by type, with the current page's life area defaulted), the Focus timer (focus/break modes, presets, custom durations, plan tasks), the Daily quote + affirmation ritual (a real day-key pick from the curated shared catalogs, with real save/add-to-stack writes) and an honest Notifications preview that says notifications are not live. Local-first; captures and catalog changes sync when signed in.

In place

Notes library & onboarding tours: sixteenth ported module

The Notes library at /notes is now REAL: a durable local notes store (lm-os-v1.notes) behind the existing editor/library. Create, edit, delete, search, collections, tags and pin all persist, and notes ride along in the JSON backup. Its Inbox tab is the single capture inbox (the redundant Life Memory page was retired; /life-memory now folds into /notes). The Habits and Journal onboarding tours are copy-only walkthroughs by design (they save nothing, like the prototype), and the legacy quotes feed renders sample content. Local only.

In place

Admin console shell: control-plane foundation

The admin shell at /admin: sidebar with accordions and the collapsible rail, breadcrumbs, the ⌘K command palette, the view-as role lens (a local preview, no auth), display currency, and the sample-labelled notifications panel. The Site map at /admin-sitemap is generated from the same navigation manifest as the sidebar. The console's fourteen real destinations are listed further down; shell preferences stay local to this browser.

In place

Admin Command spine: approval queue + AI action ledger

The Approval queue and the AI action ledger began as sample-projection pages (/admin-approvals, /admin-ledger). Both folded into the rebuilt /admin Command Center on 2026-07-07 (admin simplification v2, wave 1): the cockpit carries the ONE decision queue over real waiting items (open community flags, untriaged feedback, a founder decision recorder) and a Ledger tab reading the real append-only server auditLog; the old routes redirect there. The sample-era device-local trail retired with the batch-3 subtraction (the server auditLog is the only trail); the lm-command-v1 and lm-copilot-v1 stores are never wiped.

In place

Admin decision routing + boards

The Founder inbox (/admin-founder-inbox) and the Data center (/admin-data-center) folded into the rebuilt /admin Command Center (wave 1). The People pages consolidated in wave 3: /admin-members is now the ONE Members room — a live Roster (sign-in recency + resolved plans), a Plans tab (the real entitlements lens + the revocable grant console, server-logged to auditLog), and an Access tab documenting the real ADMIN_USER_IDS allowlist. /admin-users, /admin-plans and /admin-team redirect there; the sample working sets and staff table retired (their lm-admin-v1 data is untouched). Operations (/admin-operations, task theater) retired to the cockpit. Feedback at /admin-feedback remains the real member-report triage.

In place

Simulated departments retired (2026-07-07, wave 3) · dead engines deleted (2026-07-14)

The sample-operating department pages — Support OS (/admin-support), Admin Copilot (/admin-copilot), Growth OS (/admin-growth), Content OS (/admin-content), the Affiliate Command Center (/admin-affiliates), Automations (/admin-automations), the AI Team (/admin-ai-team), Operations (/admin-operations) and the Integrations planner (/admin-integrations) — retired under the survival rule: a surface lives only if it operates something real. On 2026-07-14 the five dead engines behind them (copilot.ts, ai-team.ts, automations.ts, founder.ts, operations.ts) were DELETED from packages/core; every lm-* store behind the old pages stays on disk untouched. FOUR routes have since been UN-retired as REAL rooms: /admin-affiliates (2026-07-08, the live-Stripe referral program), /admin-support (2026-07-14, the founder's Gmail mail room — per-alias queues, on-demand reading, reply DRAFTS with server-derived headers; the app never sends, a test-pinned invariant — but OFF since 2026-07-20: its three gmail.* scopes are Google Restricted tier and Clerk holds one Google connection per instance, so requesting them would have put the whole app under an annual CASA audit for a one-person desk. The request was withdrawn and every tab says so; the room's code is intact and waits on an OAuth client of its own), /admin-copilot (2026-07-14, the master-brain founder copilot on the founder-ask surface with the full console snapshot) and /admin-ai-team (2026-07-14, the honest roster hub — roles live in real rooms). The still-retired routes keep redirecting to their nearest real successor. The QA / Release center moved whole into the Build cockpit as its QA tab (/qa-check redirects to /admin-build?tab=qa), keeping the readiness checklist, release board, founder Ship/Hold record and the genuinely automated read-only sweep.

In place

Shared packages

packages/types, packages/core (the typed LifeOS store, same lm-os-v1 shape as the prototype, now including journal, review decisions/prompts, captures write-side, season, focus area, Life Plan, the domain reading layer, the backup layer and the page→domain resolver; the lm-copilot-v1 engine was deleted 2026-07-14 — its store data stays on disk), and packages/ui (ported member shell, admin shell, icons, CSS, the shared scheduler + routine editor + review commit picker, the Wealth-connections settings drawer, the Life Snapshot wizard, the ⌘K spotlight and the dock tools runtime).

In place

Production web app

Next.js 16 + React 19 + TypeScript + Tailwind v4 at apps/web (the single source of truth) over the shared packages/core, types and ui.

In place

Design-system foundation

Tokens, typography, and self-hosted fonts in src/styles/tokens.css.

In place

Prototype retired

The v1.30 static prototype has been removed from the tree; it's recoverable from the prototype-v1.30 git tag.

In place

Intentionally not implemented

Deliberately per-device state

The member spine synced on 2026-07-06 (see the data-seam entry above). What stays on each device on purpose: UI preferences (shell layout, view settings, dismissed nudges) and the admin console's local working stores (the QA checklist, roadmap, notification read-state). None of it is member data at risk.

Not implemented

Email & analytics

No tracking, no messaging.

Not implemented

Notification delivery & PDF export

No notification or reminder is ever sent (the in-app Notifications page says so), and there is no PDF export. Any AI affordance without a server slice behind it shows an honest not-live state instead of pretending.

Not implemented

Exports & integrations

No PDF export yet. Google Calendar is a live two-way connection (read of your primary calendar + opt-in push to the app-created calendar, edits syncing back). The calendar also offers a real one-way .ics export of upcoming actions.

Not implemented

Native mobile

An Expo app is planned after the web app is established.

Not implemented

Most member surfaces

Nearly every member surface is ported: Today, Calendar, Notes, Journal, Reviews, Goals, Habits & Routines, Identity & Inner World, the Life Plan, the AI Coach, all six life-area families, Wisdom & libraries, the Academy, Settings and the account family (Insights folded into Reviews). An unknown URL lands on the honest 404.

Not implemented

Admin capabilities beyond the ten destinations

The admin console completed its consolidation on 2026-07-07 (admin simplification v2, waves 1-3): fourteen real destinations plus the site map — the Command Center (live tiles, one decision queue, the server audit ledger), Members (roster/plans/access), Revenue, Academy Builder, Library, Community, Feedback, the AI room, the Build cockpit (with QA), Settings, and the four un-retired rooms: Support (the Gmail mail room), Copilot, AI Team and Affiliates. Every retired or folded route redirects; no lm-* store was wiped. The foundations' bigger machinery — missions, an agent roster with autonomy dials, growth/automation departments — stays Planned until it can be built against real agents and backends, never simulated meanwhile. Admin roles are a local view-as preview, never real access control.

Not implemented

The integration seams for Clerk, Convex, and Stripe are mapped in docs/roadmap/production-stack.md; the verified real-vs-placeholder ledger lives in docs/system-map/09-honesty-ledger.md. Nothing is wired until it is explicitly approved.