Next.js + Supabase + Vercel

Smart Course Platform

A protected course delivery template with activation codes, device binding, admin console, protected course routes, and private media delivery.

/activate -> /course/smart-manufacturing
1device per active code
3protected course APIs
5admin operations
1 Student submits activation code POST
2 Server validates status and device id hash
3 Protected course shell loads after session check authorized

Product Surface

Three screens that show the project clearly

These static previews mirror the repository features without exposing real course assets, production credentials, or the private deployment.

Student activation

Student

Activation

Enter activation code

First successful use binds the code to the current browser device.

Current device ID: 7f4a9d2c18e5b...

Activate course

Why it matters

Static course links are replaced by server-checked access and a short-lived session.

Admin console

Admin
Generate codes
CodeStatusAction
K7M9-Q2RAActiveReset
P3Q8-L6TZUnusedDisable
Hash-onlyDisabledDelete

Generate, list, reset device binding, disable, and delete activation codes.

Protected course shell

Course

Course

Protected Course Shell

Protected HTML loads inside the course frame after authorization.

Private media route

/api/course/asset/page-001.png

Architecture

Small enough to read, complete enough to reuse

Protected path

Student pages call server APIs. The server validates activation state, device id, session cookie, course id, and expiration before returning course HTML or media.

Admin path

Admin routes require an admin password header and expose operational workflows for activation-code management without placing credentials in client-side code.

Run Locally

Start the public template

npm install
cp .env.example .env.local
npm run dev -- --port 3050

# checks
npm run test:course
npm run lint
npm run build