Skip to content

Build v1 Techne platform: enrollment, payments, and members area #1

@unforced

Description

@unforced

Why We're Building This

Right now Techne has no way to actually onboard a student. You discover it, you're intrigued, and then nothing — no signup, no payment, no way to access cohort materials. For Cohort 2 this needs to be fully automated: a student goes from landing on the site to enrolled and inside the members area without any manual intervention.

This needs to be live before Cohort 2 enrollment opens — target: 2-3 weeks.


Stack

Layer Tool Reason
Framework Next.js (App Router) Static public pages + authenticated members area in one codebase
Auth + Database Supabase Magic link auth, Postgres, row-level security — no custom backend needed for v1
Payments Stripe Checkout + webhooks + promo codes for sliding scale/scholarships
Hosting Vercel Natural fit for Next.js, handles env vars cleanly

FastAPI comes later (v2) when we add the MCP/Parachute personalization layer.


Key Decisions

  • Auth: Magic link via email — Supabase sends a link, no password required
  • Recordings: YouTube unlisted embeds — store the URL in the database, zero storage cost
  • Admin: Simple /admin route (admin-flagged Supabase user) — paste a YouTube URL, title, week number, notes → immediately visible to enrolled students
  • Pricing: $225 flat + Stripe promo codes for sliding scale / scholarship spots
  • Design: Carry forward existing Techne aesthetic — dark hero, parchment body, Cormorant + IBM Plex Mono, ember red

Routes

Route Type Description
/ Static Homepage — migrate current Techne HTML
/programs Static Program listings including LVB Cohort 2
/enroll/[cohort] Dynamic Stripe checkout for a specific cohort
/cohort Protected Members area — recordings, materials, cohort directory
/admin Protected (admin) Add/edit sessions and resources
/writing Static Blog layer — ships as placeholder, populated later

Database Schema

cohorts (
  id uuid primary key,
  name text,                    -- "Cohort 2"
  description text,
  price_cents int,              -- 22500
  stripe_price_id text,
  starts_at timestamptz,
  ends_at timestamptz,
  is_active boolean default false
)

enrollments (
  id uuid primary key,
  user_id uuid references auth.users,
  cohort_id uuid references cohorts,
  stripe_session_id text,
  enrolled_at timestamptz default now()
)

sessions (
  id uuid primary key,
  cohort_id uuid references cohorts,
  week_number int,
  title text,
  youtube_url text,
  notes text,                   -- markdown
  published_at timestamptz
)

resources (
  id uuid primary key,
  cohort_id uuid references cohorts,
  title text,
  url text,
  resource_type text,           -- 'link' | 'document' | 'tool'
  created_at timestamptz default now()
)

Row-level security ensures enrolled students only see content for their cohort.


User Flows

Enrolling student

  1. Lands on /programs → reads about LVB Cohort 2 → clicks Enroll
  2. Stripe checkout ($225 or discounted via promo code)
  3. Stripe webhook fires on success → enrollment row created in Supabase
  4. Redirected to /cohort → sees sessions and resources

Returning student

  1. Clicks Sign In → enters email → clicks magic link in inbox
  2. Lands on /cohort → recordings, materials, cohort members

Aaron adding a recording after a session

  1. Goes to /admin → Add Session
  2. Pastes YouTube URL, title, week number, optional notes
  3. Saves → immediately visible to enrolled students

Out of Scope for V1

  • MCP / Parachute integration (v2 — requires FastAPI layer on top of Supabase)
  • Observations / evidence profiles / collective memory
  • Multiple simultaneous cohorts
  • Full community profiles / portfolio pages
  • Admin dashboard beyond simple session/resource management

Open Questions

  • Does /writing need content at launch or ships as an empty placeholder?
  • Cohort directory: just names, or names + what each student is building?
  • Does Aaron's regular account get an admin flag or is there a separate admin account?

What Comes After V1

The FastAPI MCP server sits on top of this Supabase database. When a student opens Parachute, it queries their enrollment, sessions attended, and what they've been building — personalizing their extended mind with Techne context. V1 builds the database that makes this possible. Cohort 2 students help build the MCP layer as a class project.


Brainstorm doc: docs/brainstorms/2026-02-23-techne-v1-platform-brainstorm.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions