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.type beyond 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]