Article

How to build an LMS for your courses

If you teach anything online — coding, spoken English, NEET prep, yoga, GST filing — you eventually outgrow a WhatsApp group and a folder of Google Drive links. A learning management system (LMS) is the software that holds your courses, lets students enrol and pay, plays your lessons in order, tracks who finished what, and issues certificates. This guide walks through what an LMS actually needs, how to scope it so you can launch in weeks instead of months, and where a tool like Kashvi fits if you would rather describe the app than hand-code it.

What an LMS really is

Strip away the marketing and an LMS is a database with a few well-defined tables and a set of rules connecting them. Courses contain modules; modules contain lessons; students enrol in courses and their progress is recorded lesson by lesson. Everything else — quizzes, certificates, drip scheduling, discussion — is an add-on to that spine. Getting this core right is the difference between an LMS you can grow and a pile of pages that fight each other.

Before writing a single screen, sketch your data model. Here is a minimal one that covers most course businesses:

TableHoldsKey fields
usersStudents and instructorsname, email, role, password hash
coursesEach course you selltitle, description, price, published
lessonsIndividual videos or textscourse_id, title, order, content, video_url
enrolmentsWho bought whatuser_id, course_id, purchased_at, status
progressLesson completionuser_id, lesson_id, completed_at

If you can describe these five tables clearly, you can describe your entire first version. Most founders overbuild before they have a single paying student — resist that.

The features to build first (and what to skip)

A first version does not need gamification, an AI tutor, or a mobile app on day one. It needs a student to sign up, pay, watch lessons in order, and pick up where they left off. Build in this order:

  • Sign-up and login, so each student has their own account and progress.
  • A course catalogue and a course detail page with the syllabus.
  • Checkout that unlocks the course after payment.
  • A lesson player that marks lessons complete and remembers position.
  • An instructor area to add courses, lessons, and video links.
  • A simple certificate or completion badge once all lessons are done.

Things that feel essential but can wait: live classes (use Zoom or Google Meet and paste the link into a lesson), a discussion forum (a Telegram or WhatsApp group works while you are small), and a native app. Ship the web version, get students, then let real demand tell you what to build next.

Payments and pricing for Indian creators

For an Indian audience, UPI is non-negotiable — a large share of learners will pay by UPI, not card. Razorpay covers UPI, cards, net banking, and wallets in one integration and settles to an Indian bank account, so it is the natural default over Stripe for a domestic course business. Decide early whether you sell one-time course access or a monthly subscription; the two need different logic. One-time purchase is simpler and easier to reason about, so start there unless you genuinely publish new content every month.

Keep GST in mind. Online courses are generally taxable, and if you cross the turnover threshold you will need a GSTIN and tax invoices. Store the price, tax, and invoice number on each enrolment record so your accounting is clean from the first sale rather than a scramble at year end.

Hosting your video

Do not upload course videos straight into your app's database or a public folder — that is slow and easy to pirate. Host lessons on a video service that gives you a private, embeddable player and store only the video URL or ID in your lessons table. Options range from YouTube unlisted (free, but limited protection) to Vimeo, Bunny Stream, or Cloudflare Stream for signed, harder-to-download playback. Your LMS just needs to render the right player for the lesson the enrolled student is watching.

Building it without a full dev team

You can hand-code all of this, hire an agency, or describe it to an AI app builder. Kashvi is the last option: you write what you want in plain English — "an LMS where students sign up, buy a course, watch lessons in order, and get a certificate" — and it generates a real working app with a real Postgres database and real sign-up and login, not a mockup. You see a live preview as it builds, and you can download the full source code, so you are never locked in. Razorpay and UPI are first-class, which matters for the Indian checkout above.

Be realistic about the boundary: AI generation gets you a solid, working foundation fast, but you still make the product decisions — your pricing, your syllabus, your policies — and you will iterate on the generated app. When a generation genuinely fails, Kashvi refunds the credits for it rather than charging you for broken output. The honest pitch is that it removes the weeks of boilerplate around auth, database, and payments so you can spend your time on teaching, not plumbing.

A sensible launch plan

Put one course online, priced, with three or four real lessons. Charge for it. Watch how the first ten students move through it — where they drop off, what they email you about. That feedback is worth more than any feature you imagined in advance. An LMS is never truly finished; the goal of version one is simply to make the first sale and prove people will learn from you.

Questions

Frequently asked

How long does it take to build a basic LMS?
A focused first version — sign-up, payment, a lesson player with progress tracking, and an instructor area — is a few weeks of work if you scope tightly. With an AI builder that scaffolds the database, auth, and payments, you can have a working preview in a day and spend the rest of the time refining content and flow rather than wiring plumbing.
Should I use an off-the-shelf platform or build my own?
Platforms like Teachable or Graphy are fastest to start but charge ongoing fees and limit customisation and branding. Building your own costs more upfront but you own the code, the data, and the checkout, and you avoid per-transaction platform cuts. Build your own when you want control over pricing, design, and the student experience.
How do I accept UPI payments in my LMS?
Integrate Razorpay, which supports UPI, cards, net banking, and wallets through one gateway and settles to an Indian bank account. On successful payment, your app creates an enrolment record that unlocks the course for that student. Kashvi supports Razorpay and UPI as first-class options in generated apps.
Where should I host my course videos?
Host them on a dedicated video service — YouTube unlisted for a free start, or Vimeo, Bunny Stream, or Cloudflare Stream for signed, harder-to-pirate playback — and store only the video URL or ID in your database. Your LMS embeds the player for enrolled students rather than serving raw video files.
Do I need to charge GST on online courses?
Online courses are generally taxable in India, and once your turnover crosses the registration threshold you need a GSTIN and must issue tax invoices. Record price, tax, and invoice number on every enrolment from your first sale so your accounting stays clean.
Can I get the source code for the app I build?
With Kashvi, yes — you can download the full source of the generated app, database schema included, so there is no lock-in. You can host it yourself and keep developing it with your own team whenever you choose.

Keep exploring

Turn your course idea into a working LMS

Describe the LMS you want and get a real app — Postgres database, student login, Razorpay checkout, and downloadable code you own.

Open the studio

Free to start · no credit card