Skip to content

quarterfall/quarterfall-open

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quarterfall Open

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.

What's inside?

This monorepo uses Yarn as a package manager. It includes the following packages/apps:

Apps and Packages

  • 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 by app, analytics and cloudcheck applications

Each package/app is 100% TypeScript.

Utilities

This turborepo has some additional tools already setup for you:

Database setup

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.

Build

To build all apps and packages, run the following command:

yarn run build

Develop

To develop all apps and packages, run the following command:

yarn start

Important notice

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.

Deployment

Docker

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.

Prerequisites

Build and run

  • 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

Deploy to Google Cloud

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

Notice

Part of the development of Quarterfall has been supported by the QPED project, funded under the ERASMUS+ programme.