A web application built with Spring Boot and Thymeleaf for managing academic timetables with secure authentication, timetable importation, and role-based access control.
- About
- Purpose
- Features
- Security
- Technologies
- Architecture
- Class Diagram
- Screenshots
- Configuration
- Installation
- Usage
- Project Structure
- Future Improvements
- Author
Timetable Management System is a web-based platform designed to simplify the management and visualization of academic timetables.
The application allows administrators, teachers, and students to interact with schedules through a secure and intuitive interface.
It was developed using Spring Boot, Thymeleaf, and PostgreSQL, following a clean layered architecture.
The main goal of this application is to provide an efficient solution for:
- Creating academic timetables
- Managing schedules dynamically
- Handling teachers and students access
- Importing timetable data
- Viewing timetables in a structured way
The system improves accessibility and organization for both students and administrators.
This application is intended to be deployed within an academic environment.
It can run on a local server connected to the faculty's internal network, allowing students, teachers, and administrators to access timetable management services securely.
The project is currently not publicly hosted on the Internet.
- Secure login system with Spring Security
- Role-based access control (ADMIN / USER)
- Password encryption using BCrypt
- Full CRUD operations for timetable management
- Dynamic timetable rendering using Thymeleaf
- Department-based timetable visualization
- Timetable sending and importation
- Import students and teachers data
- Manage user access to the system
- Personalized timetable view for students and teachers
- Responsive UI using HTML & CSS
- Structured and clean interface
- Dashboard for administrators and users
- Excel file handling using Apache POI
- Import timetable data efficiently
The application integrates Spring Security for authentication and authorization.
- Authentication system using Spring Security
- BCrypt password hashing
- Role-based access control (ADMIN / USER)
- Protected routes and restricted operations
- Java 17
- Spring Boot
- Spring Security
- Spring Data JPA
- Hibernate
- Thymeleaf
- HTML
- CSS
- PostgreSQL
- Apache POI (Excel import/export)
- Maven
- Git & GitHub
- IntelliJ IDEA / Eclipse
- Layered Architecture (Controller → Service → Repository)
- Spring Security Authentication & Authorization
- BCrypt Password Encryption
- JPA/Hibernate ORM
- DTO Pattern
- Excel Processing with Apache POI
- Environment Variables Configuration
- Role-Based Access Control (RBAC)
The project follows a layered architecture.
┌────────────────────┐
│ Presentation │ → Thymeleaf + HTML/CSS
└─────────┬──────────┘
│
▼
┌────────────────────┐
│ Controller │ → Request handling
└─────────┬──────────┘
│
▼
┌────────────────────┐
│ Service │ → Business logic
└─────────┬──────────┘
│
▼
┌────────────────────┐
│ Repository │ → Database access
└─────────┬──────────┘
│
▼
┌────────────────────┐
│ PostgreSQL │
└────────────────────┘
This project uses environment variables for sensitive configuration.
| Variable | Description |
|---|---|
DB_URL |
PostgreSQL JDBC URL |
DB_USERNAME |
Database username |
DB_PASSWORD |
Database password |
$env:DB_URL="jdbc:postgresql://localhost:5432/schedule_db"
$env:DB_USERNAME="postgres"
$env:DB_PASSWORD="your_password"spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}Make sure you have installed:
- Java 17+
- Maven
- PostgreSQL
- Git
git clone https://github.com/Belak17/scheduleTimetable.git
cd scheduleTimetableCreate a PostgreSQL database and configure environment variables.
Example:
Database Name: schedule_db
./mvnw spring-boot:runThe application will start on:
http://localhost:8080
- Start PostgreSQL
- Configure environment variables
- Launch the application
- Open:
http://localhost:8080
- Login as:
- Admin
- Teacher
- Student
- Import or view timetables
configuration → Application configuration
controller → MVC controllers
restcontroller → REST API endpoints
service → Business logic layer
repository → JPA repositories
model → Database entities
dto → Data Transfer Objects
request → Request payloads
response → Response payloads
enumeration → Enum definitions
exception → Custom exceptions
security → Spring Security configuration
data → Data initialization
record → Java records
templates → Thymeleaf views
static → CSS, images, static assets
application.properties → Main configuration file
- PDF timetable export
- Email notifications
- Mobile responsive optimization
- Real-time timetable updates
- Attendance statistics dashboard
- Docker support
- Multi-language support
- Backend Developer
- Java & Spring Boot Enthusiast












