Skip to main content

Introduction

This is the documentation of the Graasp digital education platform targeted at developers.

Target Audience

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):
  • 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:
    • We recommend Bruno: an API client similar to Postman or Insomnia.
    • Postman: lets you send API requests with a GUI
  • 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: