Skip to content
🐬 A CMS for Open Education
Branch: master
Clone or download
sampaccoud πŸ”–(chore) bump version to 1.5.2

- Improve english date on course page,
- Improve course glimpse text formatting.


- Remove asserts and prepare codebase for activation of `bandit` linter.
Latest commit bb14353 Jul 15, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci πŸ‘·(linters) lint backend source code with bandit Jul 15, 2019
.github 🚸(github) improve issue templates May 7, 2018
bin 🐳(project) make db engine switch simpler May 10, 2019
crowdin I18n support (#566) Apr 1, 2019
docker/files 🐳(project) make db engine switch simpler May 10, 2019
docs 🐳(project) make db engine switch simpler May 10, 2019
env.d/development 🐳(project) make db engine switch simpler May 10, 2019
gitlint ⬆️(project) update flake8 from 3.5.0 to 3.6.0 Nov 19, 2018
sandbox ✨(plugins) add a new plugin to easily create sitemaps Jun 19, 2019
src πŸ”–(chore) bump version to 1.5.2 Jul 15, 2019
tests πŸ‘·(linters) lint backend source code with bandit Jul 15, 2019
.dockerignore πŸ›(statics) fix Docker image build missing statics Apr 11, 2019
.gitignore I18n support (#566) Apr 1, 2019
.gitlint ⚑️(gitlint) allow greenkeeper fix commits Jun 11, 2018
.pylintrc ✨(courses) add fields `length` and `effort` to the course model Jun 19, 2019
.pyup.yml πŸ”§(pyup) decrease update frequency Jun 22, 2018 πŸ”–(chore) bump version to 1.5.2 Jul 15, 2019
Dockerfile 🐳(project) make db engine switch simpler May 10, 2019
LICENSE πŸ“„(license) add MIT license Apr 17, 2018 πŸ›(manifest) add missing extensions in file Apr 3, 2019
Makefile πŸ‘·(linters) lint backend source code with bandit Jul 15, 2019 πŸ“(README) update README to the latest situation Jun 26, 2019
docker-compose.yml πŸ—(media) configure Django Filer to serve private files May 22, 2019
renovate.json πŸ‘·β€β™€οΈ(dependencies) enable Renovate dependency updater Jun 26, 2018
setup.cfg πŸ”–(chore) bump version to 1.5.2 Jul 15, 2019 πŸ“¦(richie) add base richie packaging suite Jul 2, 2018

Richie, the best OpenSource CMS to build education portals



Learning Management Systems (LMS) are great tools for hosting and playing interactive online courses and MOOCs.

However, if you need to build a complete website with flexible content to aggregate your courses, in several languages and from different sources, you will soon need a CMS.

At "France UniversitΓ© NumΓ©rique", we wanted to build an OpenSource portal with Python and Django. That's why we built Richie on top of DjangoCMS, one of the best CMS on the market, as a toolbox to easily create full fledged websites with a catalog of online courses.

Among the features that Richie offers out of the box:

  • multi-lingual by default,
  • advanced access rights and moderation,
  • catalog of courses synchronized with one or more LMS instances,
  • search engine based on Elasticsearch and pre-configured to offer full-text queries, multi-facetting, auto-complete,...
  • flexible custom pages for courses, organizations, categories, teachers, blog posts (and their inter-relations),
  • Extensible with any third-party DjangoCMS plugin or any third-party Django application.


You can test Richie on our demo site.

login/password: admin/admin

The database, is regularly flushed.


Richie is a container-native application but can also be installed on your machine.

For development, the project is defined using a docker-compose file and consists of 4 services:

  • db: the Postgresql database,
  • elasticsearch: the search engine,
  • app: the actual DjangoCMS project with all our application code,
  • node: used for front-end related tasks, i.e. transpiling TypeScript sources, bundling them into a JS package, and building the CSS files from Sass sources.

At "France UniversitΓ© NumΓ©rique", we deploy our applications on OpenShift/Kubernetes using Arnold.

Getting started

First, make sure you have a recent version of Docker and Docker Compose installed on your laptop:

$ docker -v
  Docker version 1.13.1, build 092cba3

$ docker-compose --version
  docker-compose version 1.17.1, build 6d101fb

⚠️ You may need to run the following commands with sudo but this can be avoided by assigning your user to the docker group.

The easiest way to start working on the project is to use our Makefile:

$ make bootstrap

This command builds the app container, installs front-end and back-end dependencies, builds the front-end application and styles, and performs database migrations. It's a good idea to use this command each time you are pulling code from the project repository to avoid dependency-related or migration-related issues.

Now that your Docker services are ready to be used, start the full CMS by running:

$ make run

You should be able to view the site at localhost:8070

Once the CMS is up and running, you can create a superuser account:

$ make superuser

You can create a basic demo site by running:

$ make demo-site

Note that if you don't create the demo site and start from a blank CMS, you will get some errors requesting you to create some required root pages. So it is easier as a first approach to test the CMS with the demo site.


This project is intended to be community-driven, so please, do not hesitate to get in touch if you have any question related to our implementation or design decisions.

We try to raise our code quality standards and expect contributors to follow the recommandations from our handbook.

Checking your code

We use strict flake8, pylint, isort and black linters to check the validity of our backend code:

$ make lint-back

We use strict tslint and prettier to check the validity of our frontend code:

$ make lint-front

Running tests

On the backend, we use pytest to run our test suite:

$ make test-back

On the frontend, we use karma to run our test suite:

$ make test-front

Running migrations

The first time you start the project with make bootstrap, the db container automatically creates a fresh database named richie and performs database migrations. Each time a new database migration is added to the code, you can synchronize the database schema by running:

$ make migrate

Handling new dependencies

Each time you add new front-end or back-end dependencies, you will need to rebuild the application. We recommend to use:

$ make bootstrap

To go further

To see all available commands, run:

$ make

We also provide shortcuts for docker-compose commands as sugar scripts in the bin/ directory:

β”œβ”€β”€ exec
β”œβ”€β”€ pylint
β”œβ”€β”€ pytest
└── run

More details and tips & tricks can be found in our development with Docker documentation


This work is released under the MIT License (see LICENSE).

You can’t perform that action at this time.