No server knowledge required. No database expertise needed.
If you can fill out a form, you can publish a lesson. Everything you need to manage your course lives in a built-in UI — no SQL, no terminal, no backend work after the initial setup.
I wanted to launch a course. Simple enough.
Then I started pricing out the platforms. Kajabi. Teachable. Thinkific. Circle. You're looking at $150–$400/month just to get started, before you've made a single sale. Some take a cut of every transaction on top of that. And you're always one pricing change away from your margin disappearing.
I didn't want a platform that sort of fit what I needed. I wanted exactly what I wanted — a clean video course, a real community, and tooling that felt like something I'd actually build. So I built it instead.
Encore Avenue is the result. It's free to run, open source, and designed to be launched in an afternoon.
Structured courses organized into sections and lessons. Mux-powered video playback, lesson completion tracking, free preview gating, and a full progress system. Students see exactly where they are and what's next.
Slack-style community channels with real-time messaging. Members can @mention each other — mentions highlight the message for both sender and recipient, and clicking a mention opens that person's profile. Instructors, premium members, and free members are all visually distinguished. Images supported.
Full 1:1 direct messaging between any members. Real-time updates, unread counts, image sharing, and a clean conversation list — no third-party chat tool required.
Students add supporters — a parent, partner, mentor, or friend — and the platform automatically texts or emails them when the student hits milestones. Accountability built into the product itself.
This is the part that makes Encore Avenue actually usable without a developer on call.
Everything about your course is managed through a visual Content Studio at /admin. You never need to open a database editor, write SQL, or SSH into a server. The CMS handles:
- Courses — create a new course with a title, description, and slug. Edit or delete at any time.
- Sections — organize your course into named sections (modules). Reorder, rename.
- Lessons — add lessons to any section with a title, Mux video URL, and description. Mark individual lessons as free previews so non-paying visitors can get a taste before upgrading.
- Resources — attach links to each lesson: GitHub repos, Figma files, external docs, tools. They show up below the lesson description with automatic icons.
- Edit in place — click the edit icon on any course, section, or lesson to pre-fill the form and update it. Changes go live immediately.
- Delete — remove anything you no longer need, without touching the database.
The only time you'll ever open the Supabase dashboard is once, on day one, to run the migrations and set your account to
superadmin. After that, the CMS is your interface.
Each lesson has an "Encore AI" button that opens a lesson-aware chat interface. Designed to let students ask questions about exactly what they're watching without leaving the page.
Free members can browse and watch preview lessons and send up to 10 community messages before being prompted to upgrade. Premium members get full access to all lessons and unlimited community. Stripe handles checkout — one-time course access + monthly community, sold as a bundle.
You need to do the setup steps below exactly once. After that, everything — courses, lessons, resources, sections — is managed through the CMS at
/admin. No code changes, no database queries, no server restarts.
git clone https://github.com/your-handle/encore-avenue.git
cd encore-avenue
npm installcp .env.example .env.local# Supabase
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
# Mux
NEXT_PUBLIC_MUX_ENV_KEY=
# Stripe
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=supabase db pushSign up with your email, then run once in the Supabase SQL editor:
update profiles set role = 'superadmin' where email = 'your@email.com';The superadmin account unlocks the Content Studio at /admin and is displayed as the instructor on all lesson pages.
npm run devOpen http://localhost:3000. The marketing homepage is public. Everything else requires an account.
| Feature | Free | Premium |
|---|---|---|
| Watch free preview lessons | ✓ | ✓ |
| Watch all lessons | — | ✓ |
| Community chat (read) | ✓ | ✓ |
| Community chat (send) | 10 messages | Unlimited |
| Direct messages | ✓ | ✓ |
| Add supporters | ✓ | ✓ |
Premium is sold as a bundle: $249 one-time course access + $29.99/month community access.
The fastest path is Vercel + Supabase cloud.
- Push to GitHub
- Import the repo in Vercel
- Add all environment variables to Vercel's dashboard
- Set your Stripe webhook endpoint to
https://your-domain.com/api/stripe/webhook - Deploy
No servers to manage. No monthly platform fee. No DevOps knowledge required.
Once it's live, go to your-domain.com/admin and start building your course. Your students will never know — or care — how the backend works. Neither should you.
- 2FA — infrastructure complete (Twilio Verify, rate limiting, API routes). Disabled via
TWO_FA_ENABLED = falseinAuthPage.tsx. See2FA_REACTIVATION.mdto enable. - Encore AI — chat UI is built in
VideoPlayer.tsx. Connect it to your AI provider of choice. - Supporter triggers — the supporters table and UI exist. Wire milestone detection to your notification logic.
MIT. Use it, fork it, ship your own thing with it.



