This project is a microservice-based application for managing sports bookings, built with Spring Boot (Java).
It was developed during an internship at Schneider Electric with the goal of learning microservice architecture, aspect-oriented programming (AOP), reflection, and custom permission management using annotations.
The system enables users to register, log in, and book sports sessions (e.g., training with coaches, fields, or sports groups).
Admins and coaches can manage sessions, groups, and reservations, while the system ensures secure authentication and authorization across all services.
-
User Management
- Add, view, edit, and delete users.
- Role-based access control (Admin, Coach, User, Editor).
- Authentication and authorization via JWT tokens.
-
Sports Booking
- Create, schedule, and cancel reservations.
-
Permissions & Security
- Custom annotations like
@RequiresRoleand@RequiresPermission. - AOP + Reflection used to intercept requests and validate access dynamically.
- Custom annotations like
-
Notifications
- Asynchronous email notifications using JMS (ActiveMQ) and
JavaMailSender. - Notifications for registration, booking confirmation, and cancellations.
- Asynchronous email notifications using JMS (ActiveMQ) and
-
Tech Stack
- Backend: Spring Boot, Spring Data JPA, Hibernate
- Database: MySQL
- Messaging: JMS (ActiveMQ)
- Security: JWT authentication & authorization
- Understand the principles and benefits of microservice architecture.
- Gain hands-on experience with aspect-oriented programming and reflection in Java.
- Implement a custom permission system using annotations.
- Integrate asynchronous messaging for decoupled services.