Prompt Kits

Build an Online Course Platform

Selling a course means selling access to something you have already made. That makes one thing decisive: a person who has not paid must not be able to reach your lessons or download your videos. This kit builds a complete course platform in five sequenced prompts — the sales pages, enrolment and locked lessons, the lesson player with progress, payment, and the tools to keep teaching — and it proves the lock before it takes any money.

Project type: Online course platform Difficulty: Intermediate Time: 2-3 days Works with: Base44 / Lovable / v0

What you'll have at the end

  • A public page for each course that sells it: what students learn, who it is for, what is included
  • A free preview lesson per course, so people can judge before buying
  • Student accounts, where enrolment in a specific course is recorded on the account
  • Lessons that only enrolled students can open, including the video and any downloads
  • A lesson player that remembers where each student stopped and shows their progress
  • Payment that enrols the student automatically the moment it succeeds
  • A student dashboard, and an owner area where you write lessons, release them on a schedule and see who is progressing

Before you start

  • At least one course outline — the modules, the lessons in each, and roughly how long each lesson is. You do not need every lesson filmed, but you need the structure, because it becomes the shape of the whole build.
  • One real lesson ready, plus one you are happy to give away free as a preview. You cannot test the lock without one of each.
  • Where your videos will live. Video should be hosted by a proper video service and embedded, not uploaded into your app as ordinary files. Decide the service and have an account before step 3.
  • Your price and what happens after purchase — lifetime access, access for a period, or a subscription across all courses. This decides step 4 and is painful to change later.
  • A payment account you can run in test mode, and an email address for notifications.

Which platform suits this

Base44 is the smoothest: accounts, enrolment records and access rules live in one managed app, with supported payment and email paths available under their provider and plan conditions. Lovable handles this well through Lovable Cloud or optional Supabase and gives you code ownership through GitHub; test the payment-to-enrolment link and lesson permissions explicitly. v0 can build the full-stack course app, including server actions and enrolment logic, and deploy it to Vercel. You still choose and configure the authentication, database, video and payment providers, then verify access rules and payment webhooks in production-like tests. On any platform, if you need certificates for accredited training, detailed compliance reporting or scale into the thousands of students, compare this against a dedicated course product before committing.

Start with the first prompt on a free plan. Extra usage and some connected services may cost more as you build out the project.

Build it on

How we make money

The steps

1

Build the public site and the course catalogue

When to use this

Start here, in a brand-new project.

Everything that sells the course, plus the structure your lessons will live in.

The prompt

Build a website for [YOUR NAME OR BUSINESS], which teaches [WHAT YOU TEACH, e.g. watercolour painting for complete beginners] to [WHO YOUR STUDENTS ARE].

Pages: a home page explaining who you teach and why they should learn from you, with a clear button to the courses; a courses page listing everything you offer; a sales page for one single course; an about page that establishes why you are worth learning from; and a contact page with a form that emails me at [EMAIL] and stores submissions.

The single course sales page must include: what the student will be able to do at the end, who the course is for and who it is not for, the full lesson list with each lesson's title and length, what is included besides video, the price, and answers to [YOUR THREE MOST COMMON PRE-PURCHASE QUESTIONS].

Store courses and lessons as editable data with a private owner screen. A course has a title, short description, full description, who it is for, price, status of draft or published, and an ordered list of modules. A module has a title and an ordered list of lessons. A lesson has a title, a short summary, its length in minutes, its position in order, and an access setting of either free preview or enrolled students only.

On the sales page show every lesson title with its length, marking clearly which one is a free preview. Do not build any access restriction yet — that is the next step.

Design: [THREE ADJECTIVES, e.g. warm, credible, calm]. Colors: [YOUR COLORS]. Typography must be comfortable for long reading, and it must work well on a phone. Use labelled image placeholders saying [REAL PHOTO NEEDED] — do not use stock photography and do not generate images of people, classrooms or student work from scratch. Editing my own real photos is fine; only invented or generated scenes are the problem.

Add one example course with two modules and four example lessons, clearly labelled as examples for me to replace.

When finished, tell me where I edit courses and lessons, and what is still an example.

Check it worked

  • Every page opens and the course appears in the catalogue
  • The sales page shows your real lesson list with lengths, and marks the free preview
  • Adding a lesson on the owner screen makes it appear on the public lesson list
  • A course marked draft does not appear publicly
  • The contact form emails you and stores the submission
  • The whole thing reads comfortably on a phone

You'll know it worked when:

A sales page a stranger could read and decide to buy from, backed by a course structure you can edit.

Watch out for

Do not ask for enrolment, lessons or payments here. The course structure you define in this step is what everything else attaches to, and it is much cheaper to get it right now than to restructure it once students exist.

2

Add student accounts and lock the lessons

When to use this

Once the catalogue is right. Do this before payments, without exception.

Enrolment lives on the account, and non-students genuinely cannot reach paid lessons.

The prompt

Add student accounts and course access rules to this site.

People can sign up with email and password, log in, log out and reset a forgotten password. Use the platform's built-in account system — do not build a custom password system.

Each account stores which courses that person is enrolled in. Enrolment is per course, not a single yes-or-no for the whole site. Only I as the owner can change someone's enrolment; a student must never be able to enrol themselves from the website.

Lessons marked free preview are open to everyone, including people who are not logged in. Lessons marked enrolled students only can be opened solely by a logged-in account enrolled in that specific course.

Enforce this on the lesson itself, not by hiding links: a person must not be able to reach a locked lesson by typing its address, and the lesson content, video address and any downloadable file must not be retrievable by anyone not enrolled in that course.

Non-students should still see that the lesson exists — show its title and length with a clear lock, and when they open it show a short message explaining what the course includes, with a button to the sales page. Show none of the actual content.

Add an owner screen listing every student with their email, which courses they are enrolled in and when they joined, where I can enrol or remove someone manually. A normal student must not be able to reach this screen, including by typing its address.

When you are done, tell me plainly what each of these can reach: a visitor who is not logged in, a logged-in account enrolled in nothing, and an account enrolled in this course.

Check it worked

  • Logged out, you can watch the free preview and see locked lessons with an invitation to buy
  • A plain test account, enrolled in nothing, still cannot open a locked lesson
  • Pasting a locked lesson's address into a logged-out window shows the invitation, never the content
  • After you manually enrol the test account, the same lesson opens fully
  • Enrolling someone in one course does not give them access to another course
  • The student list is unreachable from a plain account, including by typing its address

You'll know it worked when:

You personally tested a locked lesson from a non-enrolled account and by pasting its address, and neither showed content.

Watch out for

This is the step that decides whether you have a business. Test it yourself — a report saying "restricted" is not proof. Pay particular attention to downloadable files and video addresses: a lesson page can be locked correctly while its PDF or video link is still openable by anyone who has it, which is how course material ends up shared.

3

Build the lesson player and progress tracking

When to use this

After the lock is verified.

The experience of actually taking the course, and the reason students come back.

The prompt

Build the lesson experience for enrolled students.

A lesson page shows the video embedded from [VIDEO SERVICE, e.g. Vimeo], the lesson title, a written summary underneath, any downloadable resources, and clear buttons to move to the previous and next lesson. Alongside it, show the full course outline with the current lesson marked, so a student always knows where they are.

Track progress per student: mark a lesson complete when the student says so, and remember it. Show a progress indicator for the course, and on the student's own home page show which course they are part-way through and a button to continue from the lesson they stopped at.

Add a course home page for enrolled students showing the outline, their progress, and where to resume.

Let students ask a question on a lesson, visible only to them and me, and notify me by email when one arrives so I can reply.

Keep the access rules from the previous step exactly as they are — everything here is only for people enrolled in that course.

Make the lesson page work well on a phone, since many students watch on one.

Check it worked

  • An enrolled test account can play the video and move through lessons with next and previous
  • Marking a lesson complete updates the progress indicator, and it is still marked after logging out and back in
  • The student home page offers to continue from the right lesson
  • Asking a question on a lesson sends you an email
  • A non-enrolled account still cannot reach any of this
  • The lesson page is comfortable to use on a phone

You'll know it worked when:

You took your own course as a student — watched, marked complete, left, came back, and it resumed in the right place.

Watch out for

Upload video to a real video service and embed it rather than storing video files in your app; app storage is not built for streaming and playback will be poor on phones and slow connections. Also check your video service's own privacy setting — if the video is public there, locking the lesson page does not protect it.

4

Sell the course

When to use this

Once the lock is verified and the lesson experience works.

Paying enrols the student automatically, and the money model matches what you actually promised.

The prompt

Add payment to this course site using [PAYMENT PROVIDER, e.g. Stripe] in test mode.

My model is [ONE-OFF PURCHASE PER COURSE / SUBSCRIPTION GIVING ACCESS TO EVERYTHING / BOTH]. Build exactly that and nothing else.

The sales page's buy button starts checkout on the provider's own secure payment page for [PRICE]. Never handle or store card details on my site.

When payment succeeds, enrol that account in that specific course automatically and send them to a welcome page confirming access, with a button straight into the first lesson. The enrolment must be created by the payment confirmation itself, never by anything the buyer's browser can trigger.

If someone buys before creating an account, guide them through creating one with the same email address and make sure the purchase attaches to it. Do not leave a paid purchase with no account attached.

Send an enrolment email confirming what they bought, what access they have and how to get back in.

[IF YOU CHOSE SUBSCRIPTION, KEEP THIS PARAGRAPH:] When a subscription is cancelled or fails, remove access at the end of the period already paid for, and add a manage-my-subscription button on the student's account page that sends them to the provider's own portal.

Add an owner view of purchases with the course, the amount and the date, and tell me exactly what I must do myself in the payment provider's dashboard, including where my secret key goes in the platform's secure settings.

Check it worked

  • The buy button opens the provider's payment page with your correct price
  • Paying with the provider's test card completes and lands on the welcome page
  • The test account is now enrolled in that course automatically, without you touching the owner screen
  • That account can open the previously locked lessons, and still cannot open a different course you did not buy
  • The enrolment email arrives
  • The purchase appears in your owner view against the right course

You'll know it worked when:

A full test purchase: pay, get enrolled automatically, open lesson one — with a course you did not buy still locked.

Watch out for

Test mode and live mode look identical. Switch to live keys and buy your own course once with a real card before you announce it, then refund yourself. Also decide your refund policy before launch and write it on the sales page in plain words — course refund disputes come from vague promises far more than from the amount.

5

Teaching tools: authoring, scheduled release and student insight

When to use this

After a full purchase works end to end.

A platform you can keep teaching from without going back to the builder.

The prompt

Improve my owner tools for this course site.

Let me write and edit lessons comfortably: reorder lessons and modules by moving them, save a lesson as a draft that students cannot see, and publish it when ready.

Let me release lessons on a schedule instead of all at once — either on fixed dates or a set number of days after each student enrols. Students see upcoming lessons listed with when they unlock, and cannot open them early by any means, including by typing the address.

Give me a dashboard showing how many students are enrolled in each course, how many are part-way through, how many finished, which lesson most people stop at, and any unanswered student questions.

Let me email all students of one course from an owner screen, for announcements such as a new lesson or a live session.

Keep everything already working exactly as it is — especially the access rules, the progress tracking and the payment flow.

Check it worked

  • You can reorder lessons and the student view reflects the new order
  • A draft lesson is invisible to an enrolled student
  • A lesson scheduled to unlock tomorrow cannot be opened today, including by pasting its address
  • The dashboard shows accurate enrolment and progress numbers
  • An announcement email reaches your test student account
  • Everything from steps 2 to 4 still works exactly as before

You'll know it worked when:

You added a new lesson, scheduled it, confirmed a student could not open it early, and announced it by email.

Watch out for

Scheduled release is a second place where access is decided, so re-test the lock afterwards — an unlock date is easy to enforce in the display and forget on the content itself. Also keep announcement emails genuinely useful; students who bought a course did not necessarily agree to marketing, so give them a way to opt out of anything promotional.

Going live

  • Replace every example course, lesson and image placeholder with your real material
  • Publish at least one genuinely useful free preview lesson — it is the strongest sales asset you have
  • Re-test the lock on the live site from a logged-out window, including the video address and any downloadable file
  • Switch payment to live keys, buy your own course once and refund it
  • Confirm the enrolment email arrives on the live site and does not land in spam
  • Write your refund policy and what access includes — lifetime, a period, or while subscribed — on the sales page before anyone pays
  • Add your privacy policy and terms (see the legal pages prompt)
  • Connect your custom domain and check the padlock appears

Spend fewer credits

Every builder charges you for the work its AI does — so the cheapest habit is thinking before you build. These six rules cut most of the waste, whichever platform you choose.

  1. Plan in a free chat first. Sketch the whole thing in ChatGPT, Claude or Gemini — pages, features, what each form collects, what it should look like. Thinking there is free; thinking inside a builder is billed.
  2. Start from a written prompt, not a sentence. "Make me a website" is the most expensive sentence in AI building. A complete first prompt — like the ones on this site — saves dozens of correction rounds.
  3. Don't be lazy with the details. Every detail you leave out comes back as a correction you pay for. Business name, colors, every page, every form field, what happens after someone submits — put it all in the first prompt.
  4. One change per message afterwards. "Fix the header, and the form, and the colors" produces a tangle that costs more to unpick than it saved.
  5. Stuck? Stop patching. If the same fix fails about three times, don't send a fourth correction — describe the whole section's desired end state in one fresh message instead.
  6. Start free. Upgrade when you need more. Use the free allowance to build and explore your first version. Upgrade when you need more usage or paid features, and check any connected service costs before launch.

The prompts on this page are written to do most of this work for you — that's the point of them.

Read the full guide

Last reviewed: 2026-08-27

FAQ

We use cookies to analyze traffic and track affiliate clicks. By continuing, you agree to our Privacy Policy.