Quarterfall is a platform that helps teachers create a hands-off, interactive learning environment for their students. We focus on ICT education. Our platform is built by ICT teachers who got frustrated with the lack of good tools that understand our needs and that provide the flexibility we require to teach ICT topics such as programming, databases or mathematics. Quarterfall is available for free as open source software.
This monorepo uses Yarn as a package manager. It includes the following packages/apps:
frontend
: a Next.js app with MUI.backend
: an express server that runs database actions.cloudcheck
: an express server that can run various code snippets via POST requests.core
: utilities library shared byapp
,analytics
andcloudcheck
applications
Each package/app is 100% TypeScript.
This turborepo has some additional tools already setup for you:
- TypeScript for static type checking
- ESLint for code linting
- Prettier for code formatting
This application uses MongoDB as a database. You can install MongoDB locally or use a cloud service like MongoDB Atlas. The database connection string can be configured in the .env
file in the backend folder.
To build all apps and packages, run the following command:
yarn run build
To develop all apps and packages, run the following command:
yarn start
When running the first time, you need to run a script for the backend, which creates an organization with an admin user. You can find this file in the /apps/backend/scripts/createOrganization
. You need to edit the organization name and the email address. This is crucial, otherwise you won't be able to bypass the login screen. The script can be run (from the root folder) with the following command:
yarn run scripts
After doing this, you need to create a Sendgrid account and add the API key to the .env
file in the backend folder. This is required for sending emails. You can create a Sendgrid account here. You can find the API key in the Sendgrid dashboard. Once you have created an account, you need to create the templates for the emails. You can find which templates you need to add in the /apps/backend/src/config.ts
file. These templates require dynamic values. If you search for the config.sendgrid.templates
keyword in your IDE, you can see which values you need to include in your template. You can find more information about creating templates here.
Each application can be run in a docker container. The docker-compose.yml file contains the configuration for the containers. This is the easiest way to run the application, as you don't need to install any dependencies on your machine.
- Build and run the docker containers
docker-compose -f docker-compose.yml up -d
- Stop the docker containers
docker-compose -f docker-compose.yml down
- Prune all docker containers
docker system prune -a
This application can be deployed to Google Cloud. The following steps are required:
- Create a Google Cloud Platform (GCP) account
- Install the Google Cloud SDK
- Create a new project in the Google Cloud Console
- Enable billing for your project
- Enable the Google Artifact Registry API to store docker images
- You can deploy the application to either Cloud Run or Google Kubernetes Engine (GKE). For Cloud Run, you need to enable the Cloud Run API. For GKE, you need to enable the Kubernetes Engine API. For more information, see Cloud Run Quickstart and GKE Quickstart.
- If you plan to use:
- Database actions: Create a Cloud SQL instance for both postgres and mysql
- File storage: Create a Cloud Storage bucket
- Analytics: Create three Cloud Functions
Part of the development of Quarterfall has been supported by the QPED project, funded under the ERASMUS+ programme.