Skip to content

LogicNinjaX/Event-Planner-and-Invitation-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

20 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽ‰ Event Management System API

Spring Boot Java MySQL License Build OpenAPI

A Spring Boot-based Event Management API for managing events, guests, invitations, and RSVP tracking โ€” with built-in email notifications and secure JWT authentication.


๐ŸŒŸ Overview

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.


โœจ Features

๐Ÿ”น 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.


๐Ÿงฐ Tech Stack

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

โš™๏ธ Maven Dependencies

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>

โš™๏ธ Configuration (application.yml)

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}

๐Ÿ”‘ Environment Variables

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

๐Ÿƒ How to Run

Prerequisites

  • โ˜• Java 21+
  • ๐Ÿงฑ Maven 3.9+
  • ๐Ÿ—„๏ธ MySQL Database
  • ๐Ÿ“ง SMTP credentials

Steps

# 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


๐Ÿงญ Sample API Endpoints

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

๐Ÿ—๏ธ Project Architecture

                          +---------------------+
                          |     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)   |
                +--------------------------------------------+

๐Ÿ”ฎ Future Enhancements

  • ๐Ÿ—“๏ธ 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)

๐Ÿ‘จโ€๐Ÿ’ป Author

Nitish Kr Sahni
๐ŸŽฏ Java Backend Developer | Spring Boot | Hibernate | REST APIs
๐Ÿ“ Passionate about clean, maintainable, and secure backend systems.

LinkedIn
GitHub


Alien ย  Keep Building ย  Alien

About

Event Management System API is a powerful and efficient solution designed to help event organizers manage events, guests, and invitations seamlessly.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors