CourseLit is a free, open source learning management systems (lms) project written in TypeScript and released under AGPL-3.0. It has 1,265 GitHub stars, 256 forks and 252 open issues, and was last pushed 7 days ago. On this registry it ranks #5 of 6 tracked projects in Learning Management Systems (LMS), with 5 head-to-head comparisons available.

What is CourseLit?

What it is

CourseLit is an open-source learning management system written in TypeScript and licensed under AGPL-3.0. It is a batteries-included platform for creating, selling, and managing online courses, digital downloads, and blogs on a branded website. The project positions itself in the open-source learning-management-system ecosystem as an alternative to Teachable, Thinkific, Podia, Teachery, and LearnDash.

The concrete problem it addresses is the need for a self-administered teaching website that combines course content, student records, payments, sales pages, and media without relying entirely on a third-party platform. The README lists course authoring, student management, Stripe payment processing, website building, custom sales pages, and analytics, while noting that analytics are very limited as of now.

Key capabilities

  • Course authoring lets an operator create and manage courses from an administrative dashboard.
  • Student management tracks enrolled users and their relationship to purchased courses.
  • Stripe payment processing supports sales of courses and digital downloads from the branded site.
  • The website builder and custom sales pages let users publish landing pages without a separate site-building tool.
  • Blog publishing is listed in the GitHub description and topics, so CourseLit can serve as a content layer alongside courses.
  • Media assets are managed through MediaLit, either through the paid hosted service or a self-run instance configured with MEDIALIT_SERVER.

Who uses it and how

  • Educators and creators can use CourseLit as the central storefront and admin tool for selling courses or digital downloads from their own branded website.
  • Operators who need a self-hosted alternative to Teachable, Thinkific, Podia, Teachery, or LearnDash can deploy CourseLit and configure their own database, authentication secret, email settings, and Stripe integration.
  • Developers can clone the monorepo, set environment values in apps/web/.env, install dependencies with pnpm, build packages, and start the application with pnpm dev.
  • Operators can deploy to Vercel by supplying environment variables for database, authentication, super-admin email, and email credentials.

Getting started

The README points users to a cloud-hosted version with a free account and a 14-day trial, and it also describes self-hosting through an official guide, deployment to Vercel, and local development with pnpm.

When to use it — and when not to

CourseLit is useful when an operator wants an open-source, self-branded LMS that can replace hosted teaching platforms such as Teachable, Thinkific, Podia, Teachery, or LearnDash. Self-hosting requires the operator to manage the database connection, authentication secret, super-admin email, email credentials, Stripe integration, and either a paid MediaLit account or a self-run MediaLit instance. The project may be less suitable for teams that need mature analytics or minimal maintenance burden, because the README calls analytics very limited and the repository metadata shows 252 open issues and 0 contributors.

project readme (upstream, from github) — read inline

CourseLit

Sell online courses and digital downloads from your own website.

An open source alternative to Teachable, Thinkific, Podia and the likes.

Website | Documentation | Roadmap

Chat Release License

A modern LMS for everyone

CourseLit is a batteries included learning management system (aka LMS) for everyone. It is an open source alternative to Teachable, Thinkific, Podia, Teachery, LearnDash and the likes.

It comes pre-equipped with all the basic tools you need to efficiently run and administer your online teaching business. Features include course authoring, student management, payment processing (via Stripe), website builder, custom sales pages and analytics (very limited as of now).

Check out this live example to see what you can build with CourseLit. Click here.

Screenshots

1. A real landing page build with CourseLit

Landing page

2. Admin dashboard

courselit lms screenshot

Features

Checkout our documentation for an updated list of features.

Getting started

Visit courselit.app to use the cloud hosted version. Sign up for a free account to get a 14 days trial period to experience the platform without any restrictions. No credit card required.

To self host CourseLit, follow our official guide.

Deploy with Vercel

Development

The project is organised as a mono-repo. It uses Pnpm workspaces for managing the mono-repo.

To set up the development environment, first clone the project on your local machine and cd to its diretory.

Then replace the values in .env file located inside the apps/web folder with your enviroment's configuration.

Now run the following commands from the root directory of the project.

# Install dependencies
pnpm install

# Build the packages
pnpm build

# Start the app
pnpm dev

That's it! Now you can dive into the code base.

Releasing packages

We use changeset to automate at the process of publishing packages to NPM.

Run the following command to add a changeset

pnpm exec changeset

Medialit

CourseLit uses MediaLit as its backend for managing media assets. It is a paid service and you need to have an account on it to store your files in the cloud.

If you do not want to use the cloud hosted version, you can roll your own instance. Add the following config to the .env file to use your own MediaLit instance.

MEDIALIT_SERVER=medialit_server_location

Writing your own widget

You can add additional functionality to your application via building your own widgets. Have a look at this document.

Environment variables

Have a look at the docker-compose.yml file to know what all environment variables are available for you to tweak.

Applying DB Migrations

The migrations are located in the apps/web/.migrations directory. The migrations are named like DD-MM-YY_HH-MM-.js so that they can be sorted chronologically.

To Apply a Migration

Since the migrations are complete scripts, you need to have some development chops—not much, though.

  1. Initialize a blank Node project. In your terminal, create a blank Node project:
mkdir migration
cd migration
npm init -y
  1. Install dependencies.

    You can refer to the first few lines of the migration to see which dependencies are required. Most of the time, you'll be good to go after running the following command:

npm i mongoose nanoid
  1. Copy the migration script into this new project folder.

  2. Run the script:

DB_CONNECTION_STRING=mongodb://<mongodb-url> node migration-script.js

Supported By

Vercel OSS Program

Frequently asked questions

Is CourseLit free to use?

CourseLit is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does CourseLit do?

Create, sell, and manage online courses with ease

What is CourseLit written in?

CourseLit is primarily written in TypeScript. Its source is publicly available at https://github.com/codelitdev/courselit, and it has 1,265 GitHub stars.