- A group project for the SQA course in the Faculty of Information Technology at Hanoi University
- A Spring Boot Application as the backend for the Education Management System
- Deployed on Google App Engine, try it out!: https://sqa-2020.uc.r.appspot.com/
- Files & further documentation can be found at: https://drive.google.com/drive/u/0/folders/1w4oz-SEe2NDjrL_trPoYElY5eRljRboG
- JWT Authentication
- CRUD with DTO and constraint validations on all domains
- Pagination and Sorting options when retrieving data
- Role-based Authorization: 3 roles: Admin, Teacher, Student
- OpenAPI Specification: on
localhost:8080
(after running the application) - Database Password Hashing with BCrypt
- Docker Image
- One-click Deployment on Google App Engine
- Including 7 domains:
Course
CourseRelease
Department
Enrollment
Student
Teacher
Timetable
- Beautiful Landing Page
- Login, Logout
- Courses Management
- Course Releases Management
- Departments Management
- Enrollments Management
- Students & their Timetable Management
- Teachers & their Timetable Management
- Change User password
- View Courses, Departments, Teachers
- View available Course Releases for own Department
- View own profile, Enrollments
- Enroll to a Course Release
- View own current Timetable
- Receive Timetable and Course suggestion
- Change own password
- Requires JAVA 8 SDK and MySQL 8 (version 8.0.23) to be installed
- Create a database named
ems
and then either:- Go to
src/main/resources/application-debug.properties
and change the following to:spring.datasource.username=YOUR_DB_USERNAME
spring.datasource.password=YOUR_DB_PASSWORD
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/ems
- Or create a new mysql db account named
sqa-dev
with passwordsqa@2021
https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql
- Go to
- In the project root folder, run in terminal:
mvn springboot:run
- Note: the first boot of the application will be very slow because it will insert ~2500 records in your database as the initial data for the application. Please wait until you receive Data Initialization on First Server Boot Completed Successfully!
- If you do not want any data to be initialized in your database, go to
src/main/java/hanu/edu/ems/InitData.java
and comment out the line (around line 134) containingtestData();
before running it for the first time. - To reset the database,
drop database ems;
andcreate database ems;
,InitData
will be run again.
Cheers
Other contributors: