Full-stack Java/Spring Boot task management system demonstrating enterprise architecture, authentication, RBAC, CRUD workflows, and MySQL persistence.
The Enterprise Task Management System is a full-stack task management web application built with Java 21, Spring Boot 3.3, Spring Security 6, and MySQL.
This project was developed as part of the SWE6002 - Enterprise Systems Development module and demonstrates enterprise application architecture, authentication, role-based access control, CRUD workflows, database persistence, and secure data handling using modern Java technologies.
The application is designed to help users organize academic, personal, and work-related tasks through a secure web interface.
Student: Dionysis Alexopoulos
Module: SWE6002 - Enterprise Systems Development
Supervisor: Spyros Mavros
Note: This repository is presented as both an academic submission and a software engineering portfolio project.
This repository is relevant for:
- Junior Java Developer roles
- Spring Boot Backend Developer internships
- Graduate Software Engineer positions
- QA / Tester roles involving web applications
- Entry-level backend engineering roles
- User registration and login
- Role-Based Access Control with
ROLE_ADMINandROLE_MEMBER - Admin user management
- Task creation, viewing, editing, deletion, searching, and filtering
- MySQL database persistence
- DTO pattern to reduce unsafe direct entity exposure
- N-tier architecture using Controller, Service, and Repository layers
- Spring Security 6 authentication and authorization
- Input validation and structured request handling
| Area | Technology |
|---|---|
| Language | Java 21 |
| Framework | Spring Boot 3.3 |
| Security | Spring Security 6 |
| Database | MySQL |
| Frontend | HTML, CSS |
| Build Tool | Maven |
| Architecture | N-tier architecture |
| Design Patterns | DTO Pattern, Repository Pattern |
The application follows an N-tier architecture to separate responsibilities and improve maintainability.
Handles HTTP requests, validates user input, and routes requests to the appropriate service methods.
Contains the core business logic of the application, including user management, task management, and authorization rules.
Communicates with the MySQL database using the Repository Pattern and provides data access abstraction.
Data Transfer Objects are used to reduce unsafe direct exposure of entity models and help prevent issues such as Mass Assignment.
This project includes local-only demo users for testing Role-Based Access Control.
Security note: These are demo credentials for local development only. They are not production credentials and should never be reused outside this project.
| Role | Username | Password |
|---|---|---|
| Admin | admin_demo |
change-me-local-only |
| Student Member | student_demo |
change-me-local-only |
| Work User | work_demo |
change-me-local-only |
For real deployments, credentials must be configured through environment variables and should never be committed to the repository.
git clone https://github.com/Dionysis33/task-management-system.git
cd task-management-systemCREATE DATABASE task_management;Update your local configuration using application.properties or environment variables.
Example local configuration:
spring.datasource.url=jdbc:mysql://localhost:3306/task_management
spring.datasource.username=your_mysql_username
spring.datasource.password=your_mysql_password
spring.jpa.hibernate.ddl-auto=updateDo not commit real database credentials to GitHub.
./mvnw spring-boot:runIf you are using Windows PowerShell:
.\mvnw spring-boot:runhttp://localhost:8080
- User registration
- User login
- Admin-level user management
- Role assignment and access control
- Create tasks
- View task list
- Edit existing tasks
- Delete tasks
- Search and filter tasks by category and date
- Authentication with Spring Security
- Role-Based Access Control
- Separation between admin and member users
- DTO usage to reduce unsafe data exposure
- Designed the backend architecture using Controller, Service, and Repository layers
- Implemented authentication and authorization with Spring Security
- Built CRUD functionality for task management
- Added role-based separation between admin and member users
- Designed database entities and relationships
- Used DTOs to reduce unsafe direct entity exposure
- Documented the development process and architecture diagrams
task-management-system/
├── .mvn/
│ └── wrapper/
├── src/
│ ├── main/
│ │ ├── java/
│ │ └── resources/
│ └── test/
├── Class_Diagram_Diagram.drawio
├── DEVELOPMENT_LOG.md
├── ERD.drawio
├── Use_Case_Diagram.drawio
├── README.md
├── mvnw
├── mvnw.cmd
└── pom.xml
The repository includes supporting architecture and design diagrams:
These diagrams document the design decisions and structure of the application.
The detailed development log covering approximately 2.5 months of work is available here:
Add screenshots in a docs/screenshots/ folder and reference them here.


- Add REST API endpoints
- Add unit and integration tests
- Add Docker Compose for Spring Boot and MySQL
- Add CI pipeline with GitHub Actions
- Add API documentation with Swagger/OpenAPI
- Improve frontend responsiveness
- Add password reset functionality
- Add task priority levels and notifications
This project is licensed under the MIT License.
See the LICENSE file for details.