Session Canvas/Docs

Quick start

Run Session Canvas on your machine and explore a fully seeded demo event in about ten minutes.

This guide gets a local copy running against a free Supabase database, seeded with DevFlow Conf 2027 — a demo event with 25 submissions across every status, scored reviews, a scheduled agenda, and a signed-in demo speaker — so you can see the whole lifecycle without entering any data.

Prerequisites

  • Node.js 20 or later and pnpm.
  • A free Supabase project (its Postgres database and Auth power the app). Two minutes to create if you don’t have one.
  • Optional: a Resend API key. Without one, every outgoing email is printed to the terminal instead of sent — fine for exploring.

Install and configure

  1. Install dependencies

    git clone https://github.com/rjcrabbe/sessioncanvas
    cd sessioncanvas
    pnpm install
    cp .env.example .env
  2. Fill in .env from your Supabase project

    From your Supabase dashboard, copy these into .env:

    • DATABASE_URL and DIRECT_URL — the pooled and direct connection strings, under Connect in the project header.
    • NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, and SUPABASE_SERVICE_ROLE_KEY — under Settings → API.

    Add RESEND_API_KEY and EMAIL_FROM if you want real email; leave them unset to log email to the console. See the full environment variable reference.

  3. Migrate and seed the database

    pnpm db:migrate   # apply Prisma migrations
    pnpm db:seed      # create the demo event
  4. Create the file-storage buckets (once per environment)

    File uploads (slides, headshots) live in Supabase Storage. Without this step the app runs fine but returns errors on any upload:

    pnpm tsx scripts/setup-storage.ts
  5. Start the dev server

    pnpm dev

    Open http://localhost:3000.

Explore the demo event

WhereURLWhat you’ll see
Admin console/adminSubmissions, evaluations, agenda, communications, tasks, settings
Call for speakers/cfp/devflow-2027/cfp-2026The public form a speaker fills out to submit a session
Speaker portal/portal/verify?token=demo-portal-tokenSigns you in as a seeded demo speaker. The token expires 7 days after seeding — re-run pnpm db:seed to refresh it
Public schedule embed/embed/democonf26-gridThe read-only schedule grid anyone can embed

Next steps