Project creatortrack app model canon
name: CreatorTrack: Apps are Collections + Custom View-Blocks, not dedicated-table apps description: Canonical architecture decision: every app = Data (collection) + View (custom view-block) + optional Feed + optional Compute; deprecated Flask dedicated-table approach type: project
Decision made 2026-06-19: The CreatorTrack app model is formally: Data (collection) + View (custom view-block) + optional Feed + optional Compute. This means:
- Habits, food, fitness, time are collections (rows + properties + relations in the shared node model), not dedicated typed tables like
app.habits/app.meal_entries/app.time_entries. Those Flask-prototype tables are deprecated for CreatorTrack. - The custom UI (streaks, charts, animations) is a custom view-block: a registered renderer type extending
collection_views.typebeyond the 6 built-ins, embeddable anywhere as a block on any page. - This keeps everything interconnected, AI-readable, and relatable across domains using the same collection engine. One substrate.
- Dedicated typed tables survive only for genuine scale/special data (clips with embeddings, finance transactions) but expose a collection-style read contract.
The new primitive to build: a custom view-block registry that maps a view type (e.g. streak) to a React renderer. Habits rebuilt as a collection + streak view is the first proof.
Why: Justin identified that bespoke apps in isolated tables break interconnection (a habit can't relate to a project, can't be referenced in a doc, AI needs special-case knowledge per table). The Notion insight generalized: every app is a database (data layer), and the platform's edge is an open renderer set over one shared model.
How to apply: Before building any new domain (food, fitness, time, CRM, etc.) in CreatorTrack, model it as a collection + a view-block, not a new app.<domain> table. The feature-plan for the habit port should start with the view-block registry as the foundation primitive.
[auto-memory session ffde9d7e-154d-4218-b8fd-db176808a92b, confidence 0.85, mode direct]