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
- 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.
-
- database name:
db
- username:
user
- password:
password
- database name:
-
Navigate to
backend
directory and run commandmvn spring-boot:run
. You don't need to specifydev
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 port8080
. -
Navigate to
frontend
directory and run commandnpm install
andnpm run start
. If everything went correctly, frontend application is listening on localhost port4200
. Now you can see working application onhttp://localhost:4200
. Every change in code will result in live-reload in running angular application.
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