Learning Platformindex / pillarsB · structure

The Foundation · B

The 5 Load-Bearing Pillars

Five hard architectural commitments everything else depends on. The build order is derived from their dependency chain.

P1Identity spine — one member, one join key

One member record. One identity provider. The IdP's stable subject id (sub) is the join key across every surface. Every first-class object (post, thread, message, enrollment, event RSVP, media upload, AI query) carries a foreign key to that member. Tier is an attribute on the member, read everywhere, re-implemented nowhere.

invariant There is exactly one member identity. No surface invents its own accounts. A member is the same member on every surface, and their tier travels with them.

P2Shell + design system — one app shell, one component language

One application shell and one component/token system. Every surface — home, boards, courses, events, DMs, admin — is assembled from the same parts. Tier-gating and choose-your-own-home live in the shell, so no surface re-implements "is this member allowed to see this?" or "where does this member land?"

invariant A member cannot tell where one service ends and the next begins. One shell, one token set, one visual system across every surface.

P3Content / interaction model — the first-class objects

A single, explicit object model. These are the nouns the entire platform is built from; every feature is an operation on them, and the AI index reads all of them.

Member ──has──▶ Tier (attribute) ├─ enrolls in ──▶ Course ──▶ Section ──▶ Resource / Evaluation ──issues──▶ Certificate ├─ posts ──▶ Thread ──in──▶ Board (public | member | inner-circle | cohort) ──▶ Post ├─ sends ──▶ Message ──in──▶ DM / Group DM ├─ RSVPs ──▶ Event ──▶ Recording ──▶ Media ──▶ Board Thread ├─ uploads ──▶ Media (self-recorded video | audio | external embed) └─ queries ──▶ AI-Index (permissioned view of ALL of the above)
invariant Every object FKs to a Member and carries a tier-visibility. Nothing is "outside" the model — including AI queries, which are logged objects too.

P4AI as a first-class service — permissioned index + agent runtime

AI is a service the whole platform calls, not a feature bolted onto one screen. Two halves:

  1. A permissioned index over all content (courses + boards + events + media transcripts + the member's own history), powered by the governed knowledge brain. Every retrieval is filtered by the querying member's tier — the same tier attribute from P1, applied at retrieval time.
  2. An agent runtime for reasoning-heavy flows, run as governed headless agents on the agent-governance plane (curate the home, "talk to the platform", synthesize a thread, draft a course) — with audit trails, not inline prompt calls.

The four AI surfaces this powers: AI-curated home (the moat) · AI tutor (retrieval-grounded, tier-scoped) · AI authoring · conversational data layer ("talk to the platform").

invariant The AI never returns content the member's tier cannot see. Permission is enforced at retrieval, not filtered after. Every AI action is a logged, governed object.

P5Service topology on dedicated iron — own the box

Own, dedicated server(s) — not shared containers on the general estate box. The earlier "reuse the VPS" lean is superseded by the grown ambition: this platform gets its own iron so its load (live-event video spikes, AI inference, realtime) never competes with the rest of the estate.

invariant One ingress, one identity, dedicated iron. Every service is a governed estate asset with a deploy contract, a smoke check, a backup, and an owner.

Build order (foundation-first)

1. IdP + identity spine (P1) → 2. Shell + design system (P2) → 3. Content model (P3) └ everything FKs to member └ every surface renders from it └ objects features act on 4. AI service (P4) → 5. Messaging / realtime → 6. Tiers + payments → 7. Polish Learning core stands up early in parallel (proven, forked) and is FEDERATED into step 1, not rebuilt.