This project fulfills Company X's need to create and manage events and various locations. The project contains two key services:
- Event and location management service: Event Managment Core
- Service of notifications of users on various events: link
- Backend: Java 21, Spring (Spring Boot, Spring Boot MVC, Spring Boot JPA)
- Data Base: Hibernate (for ORM), Liquibase (for DB migration), PostgreSQL
- Authentication and Authorization: Spring Security, JWT, OAuth2
- Notifications: Apache Kafka for async messaging between services
- Documentations: Swagger, OpenApi
- Containerization: Docker, Docker Compose, deployment in Kubernetes
- Testing: JUnit 5, Mockito, Postman/Insomnia
The service realizes interaction between users with Events and Locations, providing extensive functionality for creating, modifying, managing events and locations.
- ADMIN - can create and track Events and Locations as well as have access to approve requests for new Locations and advanced work with Locations.
- USER - user can perform CRUD operations with Events, and send requests to work with Locations (for example, add a new location).
-
Event – key model, stores information about the event:
- title
- start time, end time,
- location reference,
- description
- the cost of the event (optionally it can be a rally),
- event name,
- event type (for this purpose the system has a directory with event types),
- user of the event creator (or admin)
- list of users associated with the event
-
Location – A model that stores location information:
- location name
- location address
- capacity (optional)
- booking fee (optional)
- list of scheduled Events
- details
- date of last booking
-
User – user model for security:
- name
- mailing address
- password
- role (directory)
- list of Events
- list of created Events
The link to the documentation in Notion: Documentation by project