Smart-Learning with teacher Didac

The goal of this project is to build an app that combines my previous projects, Handwriting & Speech recognition, Single sign-on and the Email Service in a microservice architecture maintained with Kubernetes. With this app users have the abillty to create, configure, learn and share flash cards. The time between learning flashcards is based on the users learning curve attached to the card, which is calculated with the SuperMemo 2 spaced repetition algorithm and depends on feedback given to the card and the time it takes to answer the flashcard. Furthermore the app provides insight into the users learning retention with leaderboards and data visualisation.

Architecture

The application consists of an Angular frontend, which you can find in the App folder, and two .NET 5.0 Web API. One API is a Hangfire.io scheduler for scheduling the flashcards and the other API is for managing the flashcards. Managing the flashcards depends on three microservices listed below.

Microservice Repositories

Deployment

This application supports deployment with Docker Compose or Kubernetes. For Kubernetes please see the Helm Charts in this repository

Docker Compose

* prerequisite - docker installed

steps

  1. Override secrets in docker-compose with a docker-compose.vs.debug.yml file or define the secrets as environment variables in your pipeline
  2. Run "docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.vs.debug.yml up -d"

This repository also builds a docker image for the Angular app, but is only used in Kubernetes. For local development in Angular please use ng serve.

docker-compose.vs.debug.yml example file


version: '3.8'

services:

      
  teacherdidac.web:
    environment:
      AUTH_SERVER_URL: http://teacherdidac.authentication

      
  teacherdidac.scheduler:
    environment:
      DB_HOST: teacherdidac.db
      DB_NAME: ScheduleDb
      DB_USER: root
      DB_PASSWORD: secretKeY12345678!@34
      HANGFIRE_USER: admin
      HANGFIRE_PASSWORD: test


  teacherdidac.authentication:
    environment:
      DB_HOST: teacherdidac.db
      DB_NAME: IdentityDb
      DB_USER: root
      DB_PASSWORD: secretKeY12345678!@34
      JWT_SECRETTKEY: [your secret PKCS #8 key]
      JWT_ISSUER: [You]
      EMAIL_APPKEY: [Your google email app key]
      

  teacherdidac.db:
    environment:
      MYSQL_ROOT_PASSWORD: secretKeY12345678!@34