Project finances native rebuild


name: Finances app: full native rebuild into CreatorTrack approved description: Flask/SQLite finances app is being fully rebuilt natively inside CreatorTrack (own module boundary, TS ingest, Postgres writes, CreatorTrack design system); Flask app retires at cutover. type: project


Justin approved (2026-07-05) a full native rebuild of the finances app as a self-contained, extractable module inside CreatorTrack, replacing the current Flask/SQLite app + finance-bridge.ts read/write bridge that [Finances app](reference_finances_app.md) describes as canonical today.

Plan: memory/plans/finances-native-rebuild-2026-07-05.md, 33 tasks across 4 phases: - Phase A: native TypeScript ingest (SimpleFIN sync, categorize, recurring, holdings, alerts, snapshots) writing Postgres directly, module boundary enforced via ESLint (finance code only touches rest of CreatorTrack through auth + workspace id) - Phase B: native writes, finance-bridge.ts deleted - Phase C: cutover, Flask app + SQLite (finance.db) retired and archived, homepage tile repointed - Phase D: per-tab UI iteration passes with Justin driving on a dev slot

Justin confirmed (same session) the rebuild uses full CreatorTrack design system: components/ui, Geist fonts, App Router, lib/db.ts + RLS, existing connection/token patterns. Old Flask skin (finances.css, Outfit font) is deleted at the final surface pass.

Why: consolidates finances onto the same Postgres/CreatorTrack stack as the rest of LifeOS, removes the Flask/SQLite/bridge indirection, and keeps the module portable (extractable later) via an explicit no-cross-import boundary.

How to apply: once reference_finances_app.md is rewritten (Task 33), this memory should be retired/merged into it. Until then, treat reference_finances_app.md's "STILL CANONICAL FOR WRITES" note as pre-migration state, not the target architecture. Dev work happens against lifeos_dev_base clone until Phase C; nothing retires before archives (finance.db + pg_dump) are verified.

[auto-memory session 833d463b-6cb2-40b7-b251-1eb14e5e3a1b, confidence 0.85, mode direct]