Skip to content

CreatorTrack LifeOS Apps, Build Plan (2026-07-01)

URL: https://mkdocs.justinsforge.com/memory/plans/creatortrack-lifeos-apps-build-2026-07-01/

Approved by Justin 2026-07-01 after architecture brainstorm. Companion audit: creatortrack-notion-parity-audit-2026-07-01.

Locked architecture

  • One collections engine (app.nodes + collection props/views/values/relations). Apps store data as system collections; NO new dedicated domain tables.
  • App = node type claimed in components/registry.tsx rendering a custom React module (lens). Data stays ordinary database rows underneath (openable as plain tables).
  • App node wraps system child databases it provisions itself, idempotently, code-owned schema (e.g. Habits node -> Definitions + Logs child databases).
  • ONE canonical Tasks database; Projects collection relates to it; To-do app is a lens over Tasks; other apps (finance) create task rows via the same mutation path.
  • Telegram capture writes through CreatorTrack HTTP API with a bot service token acting as Justin (single source of truth for mutations; Python never duplicates position/RLS/unique-id logic).
  • Old Phase 2 Flask-era tables (tasks/habits/inbox/docs schemas) are frozen, not extended. Migration of their rows = optional later one-shot.

Phase 1 (the win): Telegram -> Habits end-to-end

  1. lib/system-apps.ts (forge-suite): declarative schema per app + ensureSystemApp(workspaceId, kind) provisioning via existing mutations (createNode/ensureCollection/addProp/addView). Idempotent by slug/type lookup.
  2. Capture API: app/api/capture/[verb]/route.ts (task | inbox | habit-log), bearer token from env (CAPTURE_TOKEN, secret in ~/.forge-secrets/creatortrack.env, wired into creatortrack-dev.service), maps to Justin's user id, auto-provisions, writes rows via asUser.
  3. HabitsApp React module (components/apps/habits/) registered on type habits: today checklist (tap = log), streak counts, year heat-map grid per habit. New kit components: StreakGrid, RingProgress.
  4. Sidebar install: creating the habits app node in the workspace (via AppLibrary install or provisioning).
  5. Repoint scripts/forge_workspace_capture.py (forge repo): new WORKSPACE_WRITE_TARGET=creatortrack mode posting to the capture API; postgres mode kept as rollback. Restart forge-inbox-capture/forge-brain-server with the new flag. Seed the 7 starter habits.
  6. End-to-end test: Telegram "log " -> row visible in HabitsApp + in the raw Logs database.

Phase 2: Tasks + Projects + To-do lens

  • Provision canonical Tasks + Projects collections (status/due/priority/relation props). Notion-style views come free from the engine.
  • To-do app (type todo or lens route): Today / overdue / unplanned, TickTick-style, plus unlogged habits surfaced as checkable items.
  • Capture verbs create_task/save_to_inbox land here.

Phase 3: the connective tissue

  • Inline/linked database block (embed filtered views in any page) -> Justin's home page.
  • Relation display polish (title-aware sort), @mention-a-page in text.
  • Food tracker (Meals + Log collections, MFP lens, new log_food capture verb). Finance/fitness re-skins stay later per roadmap.

[Claude Code]