Introduction
This is the documentation of the Graasp digital education platform targeted at developers.
This documentation focuses on Development guides and tutorials (i.e people that write code).
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)
- Node.js version 20.0 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 or nano
- 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 if you see their value. If you don't see an added value maybe don't install them. You can always install them later once you think they can benefit you.
- 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...)
Special note for people running macOS
Fo users on macOS here is 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.
Best practices
We use:
- Typescript
- Linters
- Conventional Commits
- Test suits: Cypress and Playwright
- Storybook for component library design, prototyping and documentation
- Semantic versioning