LearnGrid

Operator guide

How everything works

A short walkthrough of the product, the tech stack, and how school owners and parents use LearnGrid day to day.

Arrow keys or buttons to move · Esc for first slide

The product

Class booking for swim & dance schools

One place for timetable, kids, parents, attendance, invoices, and online booking — without the clutter of a full school LMS.

School owners

Run the school: classes, staff, billing, booking page.

Instructors

See their week and mark attendance on a phone.

Parents

Book trials, enrol kids, and pay online.

People & roles

One login. Role decides the home screen.

Staff roles

  • Owner — full control + Stripe + settings
  • Admin — office staff, almost everything
  • Instructor — own timetable + attendance

Customers

  • Parent — kids, bookings, invoices
  • Students — kids do not log in
  • Same email/password system for everyone (Supabase Auth)

Architecture

How the pieces connect

Browser → learngrid.com.au Next.js on your VPS Supabase (DB + Auth + Functions)

Next.js app

Marketing, login, dashboard, parent portal, public school pages.

Supabase

Postgres + RLS tenancy, email confirm auth, edge functions for booking/onboarding.

Add-ons

Stripe Connect (pay school directly), MailerLite (owner/parent lists).

Flow 1 · School owner

Self sign-up (no human in the loop)

  1. Start free on learngrid.com.auName, email, password, school name, swim/dance/other.
  2. Confirm emailSupabase sends the link. Account stays locked until clicked.
  3. Onboarding wizardSlug, timezone, currency. Starter programs/levels auto-seed by school type.
  4. Dashboard checklistAdd instructors → term → classes → Stripe → share booking link.

Flow 2 · Parent

Book from the school’s public page

  1. Open /s/your-slugSee timetable, spots left, trial/enrol buttons.
  2. Create account or log inSame auth system; email confirmation required.
  3. Add a kid + pick classCapacity and waitlist rules enforced by edge functions.
  4. Pay with Stripe CheckoutMoney goes to the school’s connected Stripe account.

Flow 3 · Day to day

What staff do after setup

Office / owner

  • Build term + weekly classes
  • Manage students & parents
  • Watch waitlist & invoices
  • Share public booking link

Poolside / studio

  • Open Attendance on a phone
  • Tap present / absent / late / excused
  • Saves instantly per session
  • Built for wet hands & one-handed use

Core objects

The mental model

School

Tenant with slug, branding, Stripe.

Program → Level

e.g. Learn to Swim → Level 2.

Class → Session

Weekly slot becomes dated sessions.

Enrollment

Kid’s place in a class (or trial booking).

Every business row carries school_id. Supabase Row Level Security keeps schools isolated.

Money & email

Stripe + MailerLite

Stripe Connect

Owner connects their own Stripe. Parents pay the school directly. Webhook activates enrollment after payment.

MailerLite

Owners sync to LearnGrid School Owners (or TrainGrid for “other”). Parents/clients sync to matching lists.

SaaS pricing · AUD

Cheap, but covers costs

Starter · $19/mo

40 students, 1 location. Solo teacher / tiny studio.

Studio · $39/mo

150 students, 2 locations. Default for most schools.

School · $69/mo

Unlimited* headroom. Multi-site / growing.

14-day trial. Yearly = 2 months free. 0% LearnGrid fee on parent payments at launch. ~3–5 Studio customers covers a normal month of hosting + auth + email.

Where things run today

Live vs still to wire

Live now

  • Website on your VPS (PM2 + Apache SSL)
  • Marketing, logo, pricing, about
  • Login/signup UI (graceful without DB)
  • MailerLite API key ready in env

Needs Supabase project

  • Real auth + email confirm
  • Self sign-up → onboarding
  • Dashboard / portal data
  • Public booking + demo schools

Finish the migration

Create Supabase, then one script

  1. Create project “LearnGrid”supabase.com/dashboard → new project (Sydney if available).
  2. Copy three valuesProject URL, anon key, service_role key. Also create a new Access Token for CLI.
  3. Run the wire script./scripts/wire_supabase.sh pushes schema, deploys functions, seeds demo, redeploys VPS.
  4. Test the happy pathSign up → confirm email → onboard → open /s/your-slug.

Quick map

Important URLs

Public

  • / marketing home
  • /signup school owner self sign-up
  • /login everyone
  • /s/{slug} school booking page

After login

  • /onboarding first-time owner
  • /dashboard staff home
  • /portal parent home
  • /dashboard/attendance poolside marking
LearnGrid

That’s the system.

Website is live. Product flows are built. Plug in Supabase and self sign-up, auth, booking, and the dashboard come online.

Open anytime: learngrid.com.au/slides/how-it-works.html