Secret Project 331 is a Learning Management System (LMS) developed by the MOOC Center of the University of Helsinki. It's deployed at https://courses.mooc.fi. This document contains technical information intended for developers. If you're not a developer, you might find these links helpful instead:
- To learn more about the courses, visit https://www.mooc.fi.
- For teacher documentation, refer to the Wiki tab in this repository.
To begin development on Secret Project 331, set up your local environment by following the instructions in Development.md, which covers setup on Windows, Linux, and macOS.
In this project, code style is enforced with automatic tools. To ensure your contributions follow the project's code style, you need to set up pre-commit hooks and configure your editor.
Run npm ci
in the repository root to install the necessary tools:
$ cd Code/secret-project-331/
$ npm ci
This will install lint-staged
, which ensures that your code passes some basic code style checks before committing.
When you're ready to perform a comprehensive code style check (note: this may take some time), use:
bin/git-run-branch-ready-checks
To configure Visual Studio Code for this project, open it in the repository root with the pre-configured workspace:
$ cd Code/secret-project-331/
$ bin/code
The bin/code
command automatically opens the project with recommended settings.
After opening, install the recommended extensions prompted in the bottom right corner:
Once installed, these settings will enable your editor to:
- Automatically display code style issues.
- Automatically fix some issues when saving files.
Documentation for teachers is located in the Wiki tab of this repository. The documentation within the repository itself is intended for developers only.
- Backend: Headless LMS Server Documentation
- Database Schema: Database Documentation
- Shared Module: Component Storybook
For additional developer documentation, see the docs
folder in the repository.
Below are essential resources, conventions, and courses to support development on this codebase. Familiarize yourself with these resources before beginning work.
- Mobile-first CSS
- Full Stack React Development: Fullstack Open
- Next.js: Next.js Basics
- CSS Box Model: Mozilla CSS Box Model
- CSS-in-JS with Emotion: Emotion Documentation
- CSS Layouts with Flexbox and Grid:
- Flexbox (primary layout tool):
- Patterns: Flexbox Patterns
- Playground: Flexyboxes
- Documentation: Mozilla Flexbox Documentation
- Grid (secondary layout tool):
- Documentation: Mozilla Grid Documentation
- Flexbox (primary layout tool):
- TypeScript: TypeScript Documentation
- Iframes:
- Iframe Element: MDN Iframe Documentation
- Channel Messaging API: Channel Messaging Documentation
- Docker: DevOps with Docker
- Kubernetes: DevOps with Kubernetes
- Rust Programming Language: The Rust Book
- Actix Web Framework: Actix Web
- SQLx for Rust: SQLx Usage
- Rust by Example: Rust by Example
- Learn Rust with Linked Lists: Entirely Too Many Linked Lists
- Rustlings (Rust Exercises): Rustlings
- Rust Cookbook: Rust Cookbook
The program in the services/cms
folder is licensed under GPL-3.0-only.
All other parts of the codebase are licensed under Apache-2.0.