# Coursio

> Coursio is a multi-school recorded-course platform you can run as your own SaaS for isolated, branded creator schools.

Source page: https://saascode.ai/products/coursio
Machine-readable record: https://saascode.ai/products/coursio.md

One-time purchase · full source code · self-hosted by the buyer.

Price: $249 (one-time)

## How to read this document

Written for a model auditing this product on a buyer's behalf. Two labels
appear throughout and they mean different things:

- **measured** — produced by a script reading the product's own source tree
  or database at the stated date. The method is named beside each number.
- **stated** — written by the seller. True or not, it is a claim, and this
  document does not ask you to treat it as evidence.

The live demo is the strongest verification available from outside: it runs
the same source a buyer receives. Nothing to sign up for — the public side is
open, and the seeded credentials below get you into each role.

## What it is

Coursio is a platform for running many isolated, branded creator schools on one recorded-course engine. You — the operator — own the instance. Each school owns its brand, its domain, its courses and its learner relationships. It is deliberately not a public cross-creator marketplace: every school is its own storefront and cannot see another school's data.

## Live demo

Two doors into the same running instance, and the same source a buyer
receives. There is no account to create; the public side is open, and the
seeded credentials below sign you into each role.

- **Guided (recommended):** https://saascode.ai/demo/coursio — our shell, with a role switcher and
  the credentials in the menu. Best for a person.
- **Direct:** https://coursio.saascode.ai — the product on its own, no chrome.
  Best when you are relaying steps to someone, or fetching a page.

5 roles seeded on the demo (of the 6 the schema defines — the build data below counts them all). Credentials are published deliberately: these
are demo accounts on a public demo instance, and a reviewer who cannot get
in cannot verify anything.

- **Instructor** (`instructor`) — `instructor-x@demo.com` / `demo123`
  Authors assigned courses and supports their enrolled learners. Lands on `/school`.
- **School owner** (`org_admin`) — `owner-x@demo.com` / `demo123`
  Builds courses, enrolls learners, and runs one branded school. Lands on `/school`.
- **Learner** (`student`) — `student-x@demo.com` / `demo123`
  Studies enrolled courses, completes lessons, and earns certificates. Lands on `/learn`.
- **Platform operator** (`admin`) — `staff@demo.com` / `demo123`
  Manages users, plans, content, and daily cross-school operations. Lands on `/admin`.
- **Platform owner** (`super_admin`) — `admin@demo.com` / `demo123`
  Runs all schools, plans, integrations, and platform controls. Lands on `/admin`.

Or open a role directly: https://saascode.ai/demo/coursio?role={role}

## Measured build

*measured — each number names the method that produced it.*

- **roles: 6** — distinct roles accepted by the role CHECK constraint: admin, instructor, member, org_admin, student, super_admin
- **tables: 88** — distinct CREATE TABLE statements across every applied migration
- **migrations: 112** — .sql files in supabase/migrations
- **page modules: 108** — files named page.tsx under src/app, excluding node_modules and .next
- **source lines: 241,544** — lines of code (comments and blank lines excluded) across 1258 TypeScript files (208,198) and 142 SQL files (33,346); node_modules and .next excluded
- **api route files: 442** — files named route.ts under src/app/api
- **http operations: 531** — exported HTTP method handlers across those files, de-duplicated per file, OPTIONS excluded as CORS preflight
- **schema graph: 88 tables, 178 relationships** — parsed from the applied migrations

A large number here is scope, not quality. It says the product models a
real domain rather than a CRUD skeleton; it says nothing about code
quality, duplication, test coverage or maintainability, and should not be
read as if it did.

Release: v1.0.0 · built 2026-08-13

## Complete capability inventory

26 capabilities. Each summary is *stated* — selected from the
product's own buyer documentation, or written by the seller where marked.

### Platform

- **Platform foundation** *(seller-authored)* — Operate the shared platform from one foundation for identity, tenancy, platform billing, email, monitoring, translation, API access, and outbound webhooks. These baseline services remain available across plans while product-specific authorization continues to separate the platform, school, instructor, and learner planes.
- **Branded creator schools** — Coursio is a platform for running many isolated, branded creator schools on one recorded-course engine. You — the operator — own the instance. Each school owns its brand, its domain, its courses and its learner relationships. It is deliberately not a public cross-creator marketplace: every school is its own storefront and cannot see another school's data.
- **Buyer control plane** *(seller-authored)* — Use the platform control plane to operate school-specific entities across organizations. Platform roles can work across courses, learning, media, certificates, orders, affiliates, community, lifecycle communication, and course analytics while each school's own work remains scoped to its creator console.
- **Additional languages** *(seller-authored)* — Add admin-configured locales for the interface and localized content while keeping the seeded deployment English-only. The capability stays plan-gated and requires the translation integration plus locales chosen by the platform operator; it does not claim automatic translation for every course asset.
- **Two-factor authentication** *(seller-authored)* — Offer two-factor authentication as an optional account-security control through Supabase Auth configuration. It ships behind the product's feature system rather than as a universal requirement, so the buyer can enable it for the deployment without presenting it as a product-wide compliance guarantee.
- **Custom domains** *(seller-authored)* — Attach a branded domain to a school and expand the permitted domain count by plan. A domain becomes published only after the configured provider reports the required domain and certificate state, so a saved hostname is not presented as a working custom domain.
- **Public API course operations** *(seller-authored)* — Expose scoped course operations through the public API on the highest school plan. Access uses API keys and declared scopes, while internal application routes remain outside the public contract; enabling this capability does not grant service-role access or bypass school authorization.

### Course delivery

- **Course builder** — A course belongs to one school and contains ordered modules, each containing ordered lessons. A lesson is built from typed blocks: video, text, audio, file and quiz. Courses and lessons are drafted and then published; drafts stay reachable to staff and invisible to learners.
- **Managed video** — Managed video is at the decision stage: the provider, whether it is fixed at deployment or selectable at runtime, and the per-plan storage/delivery allowances are unresolved. Until one is selected, upload and playback calls return a 503 with the code MEDIA_PROVIDER_UNAVAILABLE. The internal video asset record is still created, so curricula authored today are complete and simply gain playback when a provider is wired. Everything else about a lesson — text, files, quizzes, progress, community, certificates — works now.
- **Basic assessments** — Assessments are auto-graded. A quiz defines its questions, a passing threshold and a retry policy; attempts and answers are recorded per learner so a score can be re-checked later.
- **Drip content** — Lessons can unlock by date or by progress instead of all at once. Releases are produced by scheduled work that runs repeatedly and is safe to re-run — a lesson is never released twice and a missed run catches up on the next pass.
- **AI image generation** *(seller-authored)* — Enable an optional AI image helper for media authoring on the higher school plans. The helper is separate from managed course video and requires its own image-generation integration, so enabling it does not imply that course uploads, playback, or video generation are configured.
- **Advanced assessments** *(seller-authored)* — Add question-bank and attempt-review workflows beyond the always-on auto-graded quiz. The feature stays plan-gated while basic assessments remain available to every school, preserving a usable course flow without presenting advanced review tools as part of the entry plan.
- **Advanced analytics** — Each lesson has an idempotent completion state, and the course-level percentage is maintained from it — marking the same lesson complete twice does not inflate anything. The learner's "continue where you left off" reads the same records. Creator analytics reads progress in aggregate: average completion and lesson-by-lesson drop-off.

### Learner access

- **Learner access** — A learner reaches a course because an enrollment row links their global identity to that course in that school. Removing it removes access. No organization membership, plan, role or navigation path grants course access on its own.
- **Data export** — A school can export its learners and content, plus a certificate continuity bundle, so the school's data and its issued credentials remain usable independently of this instance.
- **CSV export** *(seller-authored)* — Export authorized school data in CSV form without bypassing the same access checks used by the rest of the product. The feature is available across the plan ladder, while each export remains subject to the caller's school, role, and record-level authorization.

### School operations

- **Lifecycle email** *(seller-authored)* — Configure lifecycle messages around welcome, inactivity, completion, and delivery health. The capability is part of the always-on course operation, giving each school a defined communication layer without turning a message into proof that an enrollment, payment, or certificate action succeeded.
- **Team invitations** *(seller-authored)* — Invite school staff into defined roles and course assignments, with availability shaped by the school plan. The invitation flow depends on transactional email and still checks staff allowances and assignment boundaries before giving a new account access to school work.

### Course commerce

- **Course commerce** *(seller-authored)* — Create explicit offers and durable orders for a school's courses while keeping provider setup honest. Offers carry amount, currency, market eligibility, and billing mode; orders preserve the commercial record even while course-payment provider selection and platform-fee collection remain unfinished.
- **Multi-currency offers** — A course is not sold by "having a price"; it is sold through explicit offers. An offer names the amount, currency, country eligibility and billing mode — one-time, installments or an access subscription — so a school can price differently per market without any client-side currency conversion. Coupons and regional offer matrices sit on the same records.
- **Affiliate program** — Schools on the higher plans can run an affiliate program: partner links, attribution on a visit, commission records that mature over a holding window and can be reversed on a refund, and a settlement view. The commission ledger is a liability record, not a payout mechanism — settlement happens through your own approved payout process.
- **Regional offers** *(seller-authored)* — Select stored offers by an approved country, currency, and provider matrix instead of changing prices with client-side live exchange rates. The feature is plan-gated and depends on a launch matrix chosen for the deployment; it does not claim that every market or payment provider is ready.

### Certificates and community

- **Certificate issuance and verification** — Each course can carry a policy: whether certificates are enabled, the minimum progress required, whether a quiz must be passed, and whether the credential expires. Issuance checks the policy against the learner's completion at that moment.
- **Course community** — Learners can comment on lessons and open questions in a course thread. Threads and comments are scoped to the school and course, so a discussion never leaks across schools. School owners moderate, and every moderation action is recorded. Instructors can answer on the courses they are assigned. Higher plans add an advanced moderation queue on top of the basic owner controls.
- **Advanced community moderation** — Learners can comment on lessons and open questions in a course thread. Threads and comments are scoped to the school and course, so a discussion never leaks across schools. School owners moderate, and every moderation action is recorded. Instructors can answer on the courses they are assigned. Higher plans add an advanced moderation queue on top of the basic owner controls.

## What each system gives the operator

*stated.*

- **Platform** — Operate isolated creator schools from one platform-wide control plane.
- **Course delivery** — Build structured courses and carry learners from lesson to completion.
- **Learner access** — Give each learner exact course access without exposing another school's data.
- **School operations** — Package plans, limits, staff access, and recurring work into one school operation.
- **Course commerce** — Structure course offers and orders without pretending unfinished payment setup is live.
- **Certificates and community** — Turn course completion into verifiable credentials and moderated learner participation.

## The problems it was built to solve

*stated — the seller's argument, given in full so you can judge it.*

### Every school stays distinct while the platform stays operable.

When several creator businesses share one installation, trust can fail in two directions at once. A school sees branding or learner activity that belongs elsewhere, while the platform team loses a reliable view of what is happening across the whole estate. The first failure turns a shared platform into a privacy and ownership concern. The second turns every intervention into a support investigation. Growth then creates more ambiguity instead of leverage: operators hesitate to onboard another school, creators question who can see their work, and routine questions about ownership take longer than the work they were meant to resolve.

### Creators move from curriculum to measurable learner completion.

A course business stalls when authoring, release, assessment, and progress live as separate chores. Lessons go out in the wrong order, learners cannot tell what comes next, and a creator has no dependable way to distinguish confusion from disengagement. The damage accumulates quietly: support fills with questions, incomplete courses remain indistinguishable from abandoned ones, and each new program adds another manual checklist. A coherent learning operation matters because the creator needs to improve the course while it is running, and the learner needs a clear sense that every session advances toward a finish.

### Commercial intent stays explicit before payment rails go live.

Course revenue becomes hard to operate when a price is only a number on a page. The business cannot explain which market it was for, what access it promised, or why an old order differs from today's offer. That ambiguity becomes expensive before the first dispute: creators improvise regional pricing, support cannot reconstruct what the learner accepted, and finance treats every exception as a manual case. A product that is honest about unfinished payment setup gives the operator room to choose the right provider and transaction model without pretending that recording an order is the same thing as collecting money.

### Course completion becomes proof learners can carry forward.

Finishing a course is valuable only while another person can understand what was completed and whether the record still stands. Without durable proof, the learner leaves with a screenshot, the school answers verification emails by hand, and any later change to a course blurs what the original achievement meant. The cost is not just administrative. Weak verification makes a certificate feel promotional instead of earned, while unclear revocation leaves schools choosing between deleting history and endorsing a record they no longer stand behind. A trustworthy completion record should remain legible after the learning session ends.

## What it takes to run it

*stated — external services the buyer supplies and pays for directly.*

- **Node.js host** (required) — Runs Next 16.2.10 with React 19.2.3; the product does not declare a Node engine version.
- **Supabase** (required) — Supabase is present as the data and authentication backend.
- **Scheduled job runner** (required) — Five jobs are declared in `vercel.json`; another host must schedule the same work.
- **Email delivery** (required) — Provider implementations ship for Brevo, Mailgun, Resend, SendGrid and SMTP.
- **Upstash** (optional) — Optional service configuration is declared in `.env.example`.
- **Sentry** (optional) — Optional monitoring configuration is declared in `.env.example`.

## FAQ

**What exactly do I receive after purchase?**

The complete source repository behind the live demo — 241,544 lines across the application and its database, 88 tables defined by 112 migrations that the shipped scripts apply for you, plus the seed data, the demo accounts and the setup documentation. Not a subset and not a scaffold: the same code that runs the demo you just used.

**Is the live demo the same product whose source I receive?**

Yes. The Coursio demo runs the delivered release (v1.0.0), and the build figures on this page are measured from that same source — not from a showcase build kept separately.

**Can I test every account role before buying?**

Yes — all 5 of them: Instructor, School owner, Learner, Platform operator, Platform owner. Each one is seeded in the live demo and reachable from the role board above, so you can inspect the product from the customer's side, the agent's side and the administrator's side before you decide.

**Is this a complete product or a starter template?**

Complete. 108 page modules and 531 HTTP operations, with authentication, roles, billing, an administration panel, background jobs and seeded demo data all wired and running. A template gives you the shape of an application; this is one you can deploy and start operating.

**Can I rebrand and modify it?**

Yes, without asking. The name, identity, copy, styling and code are yours to change. Rebranding and operating it as your own service is exactly what the licence is for.

**What does the licence allow?**

A perpetual, worldwide, non-exclusive, non-transferable licence to the product you bought and to every update released for it. The Standard licence covers one business — yours. If you deploy for clients, the Client licence covers up to five. You can modify it, rebrand it, deploy it and charge your own customers.

**Can I resell the source code?**

No. Reselling, redistributing, sublicensing or giving away the source itself is not permitted under either licence. You build and deliver products with it — the code stays with you.

**What services and ongoing costs are required?**

You bring your own accounts, so we never mark anything up and there is no ongoing cost to us beyond the purchase. Required: Node.js host, Supabase, Scheduled job runner, Email delivery. Optional: Upstash, Sentry. The table above says exactly what stops working without each one; most have usable free tiers at low volume.

**How difficult is deployment?**

Two ways, and most buyers use the first. The installer in your saascode dashboard walks it: you create free accounts at Vercel and Supabase, connect them, and it provisions the database, applies 112 migrations, seeds the data, deploys and verifies the result — you watch the steps go green. Or take the source and do it yourself with the shipped scripts and docs, which is the same sequence run by hand.

**What updates and support are included?**

Updates to that product for as long as we maintain it — no renewal fee and no expiry date on your access. Support covers download problems, defects in the code as shipped, questions about what the product does and how it is structured, and licence questions. It does not cover debugging your own modifications, building features for you, or setting up your hosting and third-party accounts.

**Why does a complete codebase cost $249?**

Because it was built once and is distributed many times. SaaSCode builds each product and ships the same finished release through the catalog, so the price reflects repeatable distribution — not a reduced codebase, an unfinished template, or what the same work would cost commissioned.

**Do I need to be a developer?**

No, for the normal path. You create free accounts at Vercel and Supabase, connect them to the installer in your saascode dashboard, and it does the deployment for you — provision, migrate, seed, deploy, verify. What it asks of you is creating two accounts and copying a token, not writing code. If you would rather deploy it yourself, or host it somewhere else, the full source and the scripts are yours to do that with. Running the product day to day needs no technical skill at all: that happens through its own interface, which is what the demo shows.

## Licence

The buyer receives the complete source and may deploy, modify and operate it
as their own SaaS, charging their own customers. The source itself is not
resold or redistributed: you build and deliver **with** it, you do not sell **it**.

## What this document cannot tell you

Stated plainly because a review that misses it is not a review:

- code quality, duplication, or architectural consistency
- test coverage
- query performance under load
- security posture beyond what the stack implies
- how maintainable it will be in a year

Scope is measurable from outside; implementation quality is not. Anyone
evaluating this should say so rather than infer quality from size.

## Written about it

- [Coursio vs Teachable for Multiple Branded Schools](https://saascode.ai/inside/coursio-vs-teachable-multiple-schools.md)
- [Multi-school course platforms in 2026: compare the boundary between brands](https://saascode.ai/inside/multi-school-course-platforms-2026-brand-boundaries.md)
- [Coursio: a platform for isolated branded creator schools](https://saascode.ai/inside/coursio-platform-for-isolated-branded-creator-schools.md)

## Links

- Catalog page: https://saascode.ai/products/coursio
- Product record: https://saascode.ai/inside/products/coursio
- Live demo: https://coursio.saascode.ai
- Every product: https://saascode.ai/llms.txt

