/Syllabus

School management system with grade book. See live demo

Primary LanguageJavaMIT LicenseMIT

Syllabus

Syllabus is an online grade book and school management system. Backend is written in Java 17 using Spring Boot 3.0, and it follows DDD and CQRS architecture design. PostgreSQL was chosen as database for the project. JWT standard is used for role based authorization. Frontend is built with Angular 14 with TailwindCSS for styling. Frontend application follows responsive web design and contains dark mode (switch in bottom right corner).

Application has been deployed to VPS and is available on www.syllabus.edu.pl

There are following roles in the application:
  • STUDENT
  • TEACHER
  • OFFICE
  • DIRECTOR
  • ADMIN

Students see their own subject realisations, together with posts, activities and grades. Teachers see subject realisations which they supervise, and they can manage them, including creating and editing posts, creating and editing activities and grading students. Offices can create, edit and view both current and archived subjects, classes, realisations, users and levels. Directors have same privileges as offices, but additionally they can archive all the resources. Admins have access to all the system functionalities.

In order to create a new account, user should ask for registration code from offices, directors or admins (OFFICE code can be generated only by DIRECTOR or ADMIN, and DIRECTOR code can be generated by ADMIN. Code will contain his role and optionally class if it's student's code.

To run application on your local machine, you have to:

  1. Make sure you have Java, Maven and Node (+ Docker if you want to use docker-compose.yml file) installed on your machine.

  2. Provide relational database on localhost port 5432 with:

    • database name: db
    • username: user
    • password: password
    There is a Docker-dev/docker-compose.yml file prepared, to quickly run PostgreSQL database in a docker container. To do so, you need to navigate to Docker-dev directory and run docker compose up -d command.
  3. Run Spring Boot application

    Navigate to backend directory and run command mvn spring-boot:run. You don't need to specify dev run profile, as it's set as default. If server doesn't start, check if database is properly running and it accepts connections on specified terms. If everything went correctly, backend application is listening on localhost port 8080.
  4. Run Angular application

    Navigate to frontend directory and run command npm install and npm run start. If everything went correctly, frontend application is listening on localhost port 4200. Now you can see working application on http://localhost:4200. Every change in code will result in live-reload in running angular application.

Production

Application has been dockerized for production deployment (Docker-prod/docker-compose.yml). Production docker-compose.yml isn't meant to run on local machine.

For production, it is strongly recommended to set JWT_SECRET environmental variable, which holds secret used for signing JWTs