A professional Spring Boot-based Tuition Class Student Management System for managing students, class batches, enrollments, attendance, payments, monthly dues, reports, and PDF payment receipts.
This project is built as a full-stack Java web application using Spring Boot, Thymeleaf, MySQL, Bootstrap, and OpenPDF.
EduTrack helps tuition class owners or administrators manage day-to-day academic and payment operations in one system.
The system supports:
- Student management
- Class / batch management
- Student enrollments
- Attendance marking and attendance records
- Monthly payment recording
- Payment dues tracking
- PDF payment receipt generation
- Search, filters, pagination, validation, and alerts
- Dashboard charts and reports
| Technology | Purpose |
|---|---|
| Java 17 | Main programming language |
| Spring Boot 4.1.0 | Backend framework |
| Spring MVC | Web layer |
| Spring Data JPA | Database operations |
| Hibernate | ORM |
| MySQL | Database |
| Thymeleaf | Server-side HTML rendering |
| Bootstrap 5 | UI design |
| Bootstrap Icons | Icons |
| Chart.js | Dashboard charts |
| OpenPDF | PDF receipt generation |
| Maven | Dependency management |
| Lombok | Boilerplate code reduction |
The dashboard provides a quick overview of the system.
Includes:
- Total students
- Active students
- Total batches
- Active enrollments
- Today attendance count
- Current month income
- Pending payments
- Charts for attendance and payment summaries
- Quick action cards
The student module allows the admin to manage all student records.
Features:
- Add new student
- Edit student
- Delete student
- Search students by name, code, phone, parent phone, or school
- Filter by education level and grade
- Pagination
- Form validation
- Success and error alerts
- Auto-generated student code
Student information includes:
- Student code
- Full name
- Phone number
- Parent phone number
- Address
- School
- Education level
- Grade
- Stream
- Joined date
- Status
The batch module is used to manage tuition class batches.
Features:
- Add new batch
- Edit batch
- Delete batch
- Search by batch name, subject, or teacher
- Filter by education level, grade, and stream
- Pagination
- Validation
- Success and error alerts
Batch information includes:
- Batch name
- Education level
- Grade
- Stream
- Subject
- Teacher name
- Monthly fee
- Class day
- Start time
- End time
- Status
The enrollment module connects students with class batches.
Features:
- Enroll students into batches
- Prevent duplicate enrollments
- Reactivate inactive enrollments
- Activate / deactivate enrollments
- Search enrollments
- Filter enrollments
- Pagination
- Success and error alerts
Duplicate enrollment protection:
If the same student is already enrolled in the same batch, the system shows a clean error message instead of creating duplicate records.
The attendance module helps track student attendance.
Features:
- Select batch and date
- Mark attendance for students
- Attendance statuses:
- PRESENT
- ABSENT
- LATE
- Search attendance records
- Filter by batch, date range, and status
- Export attendance records to CSV
- Attendance report by student
The payment module handles monthly class fee payments.
Features:
- Record monthly payments
- Prevent duplicate monthly payments
- Track paid, partial, and unpaid statuses
- Search payment records
- Filter by month, year, and status
- Export payments to CSV
- Success and error alerts
- Redirect back to payment form when an error occurs
- Generate professional PDF receipts
Payment statuses:
- PAID
- PARTIAL
- UNPAID
Payment methods:
- CASH
- BANK_TRANSFER
- CARD
- ONLINE
The payment dues module shows payment status for active enrollments for a selected month.
Features:
- Select month and year
- View all due records
- Show expected amount
- Show paid amount
- Show balance amount
- Show payment status
- Identify unpaid and partially paid students easily
The system generates a professional PDF payment receipt using OpenPDF.
Receipt includes:
- Receipt number
- EduTrack receipt badge
- Payment date
- Student details
- Batch details
- Payment details
- Paid amount
- Balance amount
- Payment method
- Payment status seal
- Authorized signature section
Receipt status seal supports:
- PAID
- PARTIALLY PAID
- UNPAID
Example receipt URLs:
/payments/receipt/{id}
/payments/{id}/receipt
The report module provides useful summaries for administration.
Includes:
- Monthly income report
- Student payment report
- Student attendance report
tuition-management
├── src
│ ├── main
│ │ ├── java
│ │ │ └── lk
│ │ │ └── janith
│ │ │ └── tuitionmanagement
│ │ │ ├── controller
│ │ │ ├── entity
│ │ │ ├── enums
│ │ │ ├── repository
│ │ │ ├── service
│ │ │ └── TuitionManagementApplication.java
│ │ └── resources
│ │ ├── static
│ │ │ └── css
│ │ │ └── app.css
│ │ ├── templates
│ │ │ ├── fragments
│ │ │ ├── dashboard.html
│ │ │ ├── students
│ │ │ ├── batches
│ │ │ ├── enrollments
│ │ │ ├── attendance
│ │ │ ├── payments
│ │ │ └── reports
│ │ └── application.properties
│ └── test
├── pom.xml
└── README.md
The project uses MySQL.
Default database name:
tuition_management_db
The database can be created automatically if this property is enabled:
spring.datasource.url=jdbc:mysql://localhost:3306/tuition_management_db?createDatabaseIfNotExist=true
Create or update this file:
src/main/resources/application.properties
Recommended configuration:
spring.application.name=tuition-management
spring.datasource.url=jdbc:mysql://localhost:3306/tuition_management_db?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=${DB_PASSWORD}
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.thymeleaf.cache=false
server.port=8080
spring.docker.compose.enabled=false
This project uses an environment variable for the database password.
Set this environment variable:
DB_PASSWORD=your_mysql_password
Example for Windows PowerShell:
setx DB_PASSWORD "your_mysql_password"
After setting it, restart IntelliJ IDEA or your terminal.
git clone https://github.com/your-username/tuition-management-system.git
Open the project using IntelliJ IDEA.
Make sure MySQL is running.
Create the database manually if needed:
CREATE DATABASE tuition_management_db;
In IntelliJ IDEA:
Right click pom.xml
Maven
Reload Project
mvn clean compile
Run the main class:
TuitionManagementApplication.java
Or use Maven:
mvn spring-boot:run
http://localhost:8080/dashboard
| Module | URL |
|---|---|
| Dashboard | /dashboard |
| Students | /students |
| Add Student | /students/new |
| Batches | /batches |
| Add Batch | /batches/new |
| Enrollments | /enrollments |
| New Enrollment | /enrollments/new |
| Attendance | /attendance |
| Attendance Records | /attendance/records |
| Payments | /payments |
| Add Payment | /payments/new |
| Payment Dues | /payments/dues |
| Reports | /reports |
The system includes backend validation using Spring Boot Validation.
Examples:
Student validation:
- Full name is required
- Phone number must contain exactly 10 digits
- Parent phone number is required
- School name is required
- Education level is required
- Grade is required
- Stream is required
- Joined date is required
- Student status is required
Batch validation:
- Batch name is required
- Subject is required
- Teacher name is required
- Monthly fee must be greater than 0
- Class day is required
- Start time is required
- End time is required
- Batch status is required
The system includes clean success and error alerts.
Examples:
Student added successfully.
Student updated successfully.
Batch cannot be deleted because related enrollments, payments, or attendance records may exist.
This student is already enrolled in the selected batch.
This enrollment already has a payment record for July 2026.
Payment recorded successfully.
The system prevents important duplicate records.
Protected actions:
- Same student cannot be enrolled into the same batch twice
- Same enrollment cannot have duplicate payments for the same month and year
- Delete actions are protected when related records exist
The system supports CSV export for:
- Attendance records
- Payment records
This helps admins analyze records in Excel or Google Sheets.
The project uses OpenPDF to generate receipts.
Dependency:
com.github.librepdf:openpdf
Receipt URLs:
/payments/receipt/{id}
/payments/{id}/receipt
The PDF receipt is generated dynamically from payment data.
Add your screenshots here after running the project.
screenshots/dashboard.png
screenshots/students.png
screenshots/batches.png
screenshots/payment-receipt.png
Main dependencies include:
- spring-boot-starter-webmvc
- spring-boot-starter-thymeleaf
- spring-boot-starter-data-jpa
- spring-boot-starter-validation
- spring-boot-starter-security
- mysql-connector-j
- lombok
- openpdf
- spring-boot-devtools
mvn clean compile
mvn spring-boot:run
Check status:
git status
Add files:
git add .
Commit:
git commit -m "Update tuition management system"
Push:
git push
Possible future updates:
- Admin login and role-based access
- Student portal
- Parent portal
- SMS or WhatsApp payment reminders
- Email receipt sending
- Online payment gateway integration
- QR code attendance marking
- Advanced report dashboard
- Backup and restore feature
- Cloud deployment
Developed by Janith Dasanayaka.
GitHub: @janithcd