Skip to content

PrashantPulkit/EventApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Event Management Application

Overview

This project is a full-stack event management application that allows users to create events, browse available events, and register for them. The system is designed with a clean separation of concerns, efficient data handling, and a modern user interface.

The application demonstrates core backend engineering concepts such as REST API design, validation, pagination, and database interaction, along with a responsive frontend built using React.


Features

Core Functionality

  • Create events with title, date, type, description, and optional image URL
  • View a list of events with pagination
  • View detailed information for a specific event
  • Register users for events
  • Prevent duplicate registrations for the same event

Validation and Error Handling

  • Required field validation for all inputs
  • Email format validation
  • Proper error responses for invalid input
  • Duplicate registration prevention with appropriate status codes

Additional Enhancements

  • Search events by title
  • Filter events by type
  • Pagination with next/previous navigation
  • Optimized event listing using DTO projection (excludes large fields like description)
  • Registration count per event (if implemented)
  • Clean UI with card-based layout and responsive design
  • Image support with fallback placeholder
  • Debounced search for improved performance

Requirements Coverage

The following requirements from the assessment have been implemented:

  • Event creation with required fields
  • Event listing and detailed view
  • User registration for events
  • Duplicate registration prevention
  • Input validation and error handling
  • Backend deployment with public URL
  • Frontend deployment with public URL
  • Database integration

Additional implemented improvements:

  • Search and filtering functionality
  • Pagination support
  • Optimized database queries using projections
  • Improved UI/UX with structured layout
  • Debounced API calls for search
  • Event detail navigation and routing

Tech Stack

Backend

  • Java
  • Spring Boot
  • Spring Data JPA (Hibernate)
  • MySQL

Frontend

  • React (Vite)
  • Axios
  • React Router

Deployment

  • Backend hosted on Railway
  • Frontend hosted on Vercel

Architecture

The application follows a layered architecture:

Controller → Service → Repository → Database

  • Controllers handle HTTP requests and responses
  • Services contain business logic
  • Repositories interact with the database
  • DTOs are used for request/response separation and optimization

Architecture Diagram

image

API Endpoints

Method Endpoint Description
POST /api/events Create event
GET /api/events Get paginated events
GET /api/events/{id} Get event details
GET /api/events/search Search/filter events
POST /api/events/{id}/register Register user

Setup Instructions

Backend

  1. Navigate to backend directory
  2. Configure database in application.properties
  3. Run:
mvn spring-boot:run

Frontend

  1. Navigate to frontend directory
  2. Install dependencies:
npm install
  1. Start development server:
npm run dev

Deployment

Backend

  • Deployed on Railway
  • Connected to MySQL database

Frontend

  • Deployed on Vercel
  • Connected to backend via environment variables

Note: Backend may experience a short delay on first request due to cold start in free-tier hosting.


Design Decisions

  • Spring Boot was chosen for rapid backend development and strong ecosystem support
  • JPA/Hibernate used for ORM abstraction and database interaction
  • DTO projection used to reduce payload size and improve performance
  • React used for modular and scalable frontend development
  • RESTful APIs used for clear separation between frontend and backend

Future Improvements

  • Authentication and authorization (JWT)
  • Image upload instead of URL input
  • Advanced filtering (date range, categories)
  • CI/CD pipeline integration
  • Role-based access control
  • Caching for frequently accessed data

Author

Prashant

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors