Project Details

The project is a gamification experiment made for Engim Veneto educational institutes. Teachers of Engim organization can create different exercises on the web platform, and make them available to all their pupils. Students can solve the exercises within the mobile app and get awarded with points that help them climb the scoreboard.

There are three types of exercises: classic quiz, video comprehension and a small 2D puzzle game called "insight". Students and teacher can also customize their profile, creating a personal avatar within the mobile app. The app is also used to communicate with the students by sending broadcast announcements to all the users.

Information

Client:

ENGIM Veneto

Date:

March 28, 2022

Function:

Developer

Technologies:
  • flutter
  • angular
  • nodejs
  • graphql
  • docker
Site Link:

veneto.engim.org

Availability:
#

Architecture and Technologies

In this project I created the system architecture, as in many other projects, and developed the whole code. The database used is a PostgreSQL with a GraphQL layer provided by Hasura. In addition to queries and mutations, Hasura handles authorizations, roles, permissions and all the cron API calls. The backend is a Node.JS server that exposes all the APIs and includes the authentication system. The mobile app is developed with Flutter. On the web app the students can customize their profile and avatar, check their class scoreboard and improve their score by completing exercises. The application can also receive announcements via push notifications, implemented with Firebase.

There is also available a web platform developed with Angular 11. It cannot be used by students but it is used by teachers, schools and administrators. Teachers can create and share their exercises with the students and check the scoreboard of all their classes. Administrators and schools can register students and teachers, and send announcements to them. Moreover, they can view various charts and stats. The web app is based on ngx-admin.

Every system component is dockerized and deployed on DigitalOcean. GitLab pipelines handle the build, packaging and delivery of the containers. Other techonolgies used are Nginx (as a proxy) and Certbot (to handle SSL certificates renewals).