A Spring Boot-based Event Management API for managing events, guests, invitations, and RSVP tracking โ with built-in email notifications and secure JWT authentication.
The Event Management System API streamlines how event organizers handle events and invitations.
It provides endpoints for event CRUD operations, guest management, customizable invitations, and automated email dispatch using Spring Mail.
๐น Event Management โ Create, update, and delete events.
๐น Guest Management โ Add and track guests per event.
๐น RSVP Tracking โ Manage guest responses: Pending, Accepted, Declined.
๐น Email Notifications โ Send invitations via SMTP with templated emails.
๐น Authentication โ JWT-secured endpoints with Spring Security.
๐น API Documentation โ Interactive Swagger UI for testing endpoints.
| Layer | Technology |
|---|---|
| Language | Java 21 |
| Framework | Spring Boot 3 |
| Database | MySQL |
| ORM | Spring Data JPA |
| Security | Spring Security + JWT |
| Templating | Thymeleaf |
| Email Service | Spring Mail |
| API Docs | Springdoc OpenAPI (Swagger) |
| Mapping Tool | MapStruct |
Click to view dependencies
<!-- Core Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Database -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!-- Validation -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- Email -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- OpenAPI Docs -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.8.1</version>
</dependency>
<!-- Object Mapper -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.6.3</version>
<scope>provided</scope>
</dependency>
<!-- Security & JWT -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.12.6</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.12.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.12.6</version>
<scope>runtime</scope>
</dependency>
<!-- Thymeleaf Templates -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Testing -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>spring:
application:
name: demo
datasource:
url: ${DB_URL}
username: ${DB_UNAME}
password: ${DB_PASS}
driver-class-name: ${DRIVER_CLASS}
jpa:
hibernate.ddl-auto: update
show-sql: true
properties:
hibernate:
format_sql: true
highlight_sql: true
mail:
host: ${SMTP_HOST}
port: ${SMTP_PORT}
username: ${SMTP_UNAME}
password: ${SMTP_PASS}
properties:
mail:
smtp:
auth: true
starttls:
enable: true
logging:
file:
name: logs/app.log
jwt:
secret: ${JWT_SECRET}
expiration: ${JWT_EXP} # in milliseconds
app:
ip: ${HOST_IP}| Variable | Description |
|---|---|
DB_URL |
Database connection URL |
DB_UNAME |
Database username |
DB_PASS |
Database password |
DRIVER_CLASS |
MySQL driver class |
SMTP_HOST |
SMTP host (e.g., smtp.gmail.com) |
SMTP_PORT |
SMTP port |
SMTP_UNAME |
SMTP username |
SMTP_PASS |
SMTP password |
JWT_SECRET |
Secret key for JWT token |
JWT_EXP |
JWT expiration time (ms) |
HOST_IP |
Application host IP |
- โ Java 21+
- ๐งฑ Maven 3.9+
- ๐๏ธ MySQL Database
- ๐ง SMTP credentials
# Clone repository
git clone https://github.com/LogicNinjaX/Event-Planner-and-Invitation-API.git
# Navigate into folder
cd Event-Planner-and-Invitation-API
# Run the project
mvn spring-boot:run๐ Swagger UI available at:
๐ http://localhost:8080/swagger-ui.html
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/v1/events |
Create new event |
GET |
/api/v1/events |
Fetch all events |
PUT |
/api/v1/events/{id} |
Update event details |
DELETE |
/api/v1/events/{id} |
Delete event |
POST |
/api/v1/events/{id}/invitations/?email=guest-email |
Send invitation |
GET |
/api/v1/events/{id}/invitations |
Get invitation list by event id |
GET |
/api/rsvp/{eventId} |
Get RSVP summary |
+---------------------+
| Client / UI |
+----------+----------+
|
v
+----------------------------+
| REST Controller |
+--------------+---------------+
|
v
+--------------------+
| Service Layer |
| (Business Logic) |
+--------------------+
|
v
+-----------------------------+
| Repository Layer |
| (Spring Data JPA Interface) |
+-----------------------------+
|
v
+------------------+
| MySQL DB |
+------------------+
|
+--------------------------------------------+
| External Services: |
| โข Email (Spring Mail + Thymeleaf) |
| โข JWT Auth (Token Validation & Security) |
+--------------------------------------------+
- ๐๏ธ Integration with Google Calendar / Outlook
- ๐ Admin dashboard (React or Angular)
- ๐ค Bulk guest import (CSV/Excel)
- ๐ Multi-language invitation templates
- ๐จ Custom Invitations (Choose from predefined templates and personalize content)
Nitish Kr Sahni
๐ฏ Java Backend Developer | Spring Boot | Hibernate | REST APIs
๐ Passionate about clean, maintainable, and secure backend systems.
