Introduction
This is the documentation of the Graasp digital education platform targeted at developers.
This documentation is targeted at people writing code or who want to be involved with code or architecture of the platform.
For the end-user documentation, tutorials and reference, please go to the User docs
This documentation focuses on:
- the setup and installation of the platform on your machine
- the guidelines and protocols to participate and contribute in the development of Graasp
- a technical description of the architecture and features of Graasp
Prerequisites
This documentation assumes that you are familiar with the command line. We will guide you and tell you which commands to run, but it is best if you can understand what they will do.
If you need a complete refresher on how to do web development you should have a look at the Odin Project
What you'll need
Here we list the tools that you should have installed in order to make your development work easier.
Required
- A modern browser: Arc, Chrome, Firefox, Safari or others will work, choose based on your personal preference (it is recommended to have at least 2 installed on your machine in cases where you need to debug browser compatibility issues)
- A recent version of Node.js (22 or above):
- We recommend to use
volta
, a node version manager - You can also use
nvm
, an older node version manager
- We recommend to use
- A code editor:
- We recommend VSCode as our main supported development IDE, because we will be using devcontainers to create our development environment for the backend.
- You can also use IntelliJ WebStorm, SublimeText, or even vi, vim, nvim, emacs etc...
- Docker Desktop: to run containers
tip
You do not need to login to Docker.
Nice to have
These are a few tools that we find nice to have when developing. Feel free to install them and try them out if you think they add value.
- An API client that allows you to make requests to the backend:
- Starship: a utility to improve your terminal prompt (git branch, node version etc...)
- The fish shell as an alternative to zsh or bash
gh
, the github command line, allows you to interact with github features from the cli, clone, create PRs, view workflow runs, list issues etc.
For people on macOS
For users on macOS we have a list of tools that we think will make your life easier:
- Rectangle.app a window manager that allows you to re-organize your window layout with the keyboard. It also supports dragging and snapping to edges of the screen. Very light weight, try it out by pressing
ctrl + alt + left arrow
, your current window should now take half the horizontal space on the left. There is a pro version available. IMO the base version is already enough, but if you think you will benefit from the upgrade and want to support the work of the developer, maybe consider buying the pro version. - brew the missing package manager for macOS. You might already have installed it, but if not, it is a good tool to have.
Tools and practices
We use:
- Typescript
- Linters
- Conventional Commits
- Test suits:
- Cypress: E2E tests
- Playwright: E2E tests
- Vitest: unit tests
- Storybook for component library design, prototyping and documentation
- Semantic versioning