Skip to content

A Java Based Full-stack Venue Booking Platform built with Java Spring Boot and React. Features Admin Dashboard for Venue Management, User Booking System, and real-time Availability Tracking with Modern UI. Demonstrates complete CRUD Operations and essential Web Application Functionality.

Notifications You must be signed in to change notification settings

Satyajeet-23/EasyVenue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

EasyVenue - Mini Venue Booking Platform

A full-stack web application built for venue owners and users to manage and book event spaces. Features a modern Java Spring Boot backend with React frontend, designed with scalable architecture, modular codebase, and RESTful API best practices.

๐Ÿš€ Features

๐Ÿ› ๏ธ Admin (Venue Owners)

  • Add new venues with venue name, location, capacity, and pricing details
  • Mark dates as unavailable (e.g., for offline bookings)
  • View list of venues with control over availability
  • View recent bookings and manage venue operations

๐Ÿ‘ฅ User (Public)

  • Browse available venues with detailed information
  • Book a venue for specific dates by filling form which includes user name, email, booking date, and duration
  • View booking confirmation and details

๐Ÿ“ Project Structure

satyajeet-23-easyvenue/
โ”œโ”€โ”€ Backend/                    # Java Spring Boot, JPA/Hibernate
โ”‚   โ”œโ”€โ”€ pom.xml
โ”‚   โ””โ”€โ”€ src/
โ”‚       โ”œโ”€โ”€ main/
โ”‚       โ”‚   โ”œโ”€โ”€ java/com/easyvenue/backend/
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ BackendApplication.java
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ config/
โ”‚       โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ VenueDataInitializer.java
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ controller/
โ”‚       โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ BookingController.java
โ”‚       โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ VenueController.java
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ dto/
โ”‚       โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AvailabilityUpdateRequest.java
โ”‚       โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ BookingRequest.java
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ model/
โ”‚       โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Booking.java
โ”‚       โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Venue.java
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ repository/
โ”‚       โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ BookingRepository.java
โ”‚       โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ VenueRepository.java
โ”‚       โ”‚   โ”‚   โ””โ”€โ”€ service/impl/
โ”‚       โ”‚   โ”‚       โ”œโ”€โ”€ BookingService.java
โ”‚       โ”‚   โ”‚       โ””โ”€โ”€ VenueService.java
โ”‚       โ”‚   โ””โ”€โ”€ resources/
โ”‚       โ”‚       โ””โ”€โ”€ application.properties
โ”‚       โ””โ”€โ”€ test/
โ”‚           โ””โ”€โ”€ java/com/easyvenue/backend/
โ”‚               โ””โ”€โ”€ BackendApplicationTests.java
โ””โ”€โ”€ Frontend/                   # React, Vite, Modern CSS
    โ”œโ”€โ”€ README.md
    โ”œโ”€โ”€ eslint.config.js
    โ”œโ”€โ”€ index.html
    โ”œโ”€โ”€ package.json
    โ”œโ”€โ”€ vite.config.js
    โ”œโ”€โ”€ .env.example
    โ””โ”€โ”€ src/
        โ”œโ”€โ”€ App.jsx
        โ”œโ”€โ”€ index.css
        โ”œโ”€โ”€ main.jsx
        โ”œโ”€โ”€ components/
        โ”‚   โ”œโ”€โ”€ Footer.jsx
        โ”‚   โ””โ”€โ”€ Navbars/
        โ”‚       โ”œโ”€โ”€ AdminNavbar.jsx
        โ”‚       โ””โ”€โ”€ PublicNavbar.jsx
        โ”œโ”€โ”€ hooks/
        โ”‚   โ”œโ”€โ”€ useBookingMutation.js
        โ”‚   โ””โ”€โ”€ useVenues.js
        โ”œโ”€โ”€ layouts/
        โ”‚   โ”œโ”€โ”€ AdminLayout.jsx
        โ”‚   โ””โ”€โ”€ PublicLayout.jsx
        โ”œโ”€โ”€ pages/
        โ”‚   โ”œโ”€โ”€ NotFound.jsx
        โ”‚   โ”œโ”€โ”€ admin/
        โ”‚   โ”‚   โ”œโ”€โ”€ AddVenueForm.jsx
        โ”‚   โ”‚   โ”œโ”€โ”€ AdminVenueList.jsx
        โ”‚   โ”‚   โ”œโ”€โ”€ AvailabilityForm.jsx
        โ”‚   โ”‚   โ””โ”€โ”€ RecentBookings.jsx
        โ”‚   โ””โ”€โ”€ user/
        โ”‚       โ”œโ”€โ”€ BookingForm.jsx
        โ”‚       โ”œโ”€โ”€ BookingSuccess.jsx
        โ”‚       โ”œโ”€โ”€ HomePage.jsx
        โ”‚       โ”œโ”€โ”€ VenueDetails.jsx
        โ”‚       โ””โ”€โ”€ VenueList.jsx
        โ””โ”€โ”€ services/
            โ”œโ”€โ”€ apiClient.js
            โ”œโ”€โ”€ bookingService.js
            โ””โ”€โ”€ venueService.js

๐Ÿ“ฆ Tech Stack

๐Ÿง  Frontend (Latest Versions)

Tech / Library Version Purpose
React 18.3+ Core library for building UI
Vite 5.4+ Fast dev server and build tool
React Router DOM 6.26+ Client-side routing
Axios 1.7+ Promise-based HTTP client for API communication
ESLint 9.9+ Code linting and quality assurance
Modern CSS/Styled Components Latest Styling and responsive design

๐Ÿ”ง Backend (Latest Versions)

Tech / Library Version Purpose
Java 21 LTS Programming language
Spring Boot 3.3+ Application framework
Spring Web 6.1+ RESTful web services
Spring Data JPA 3.3+ Data persistence and ORM
Hibernate 6.5+ JPA implementation
Maven 3.9+ Dependency management and build tool
H2/MySQL Database Latest Data storage (configurable)
Spring Boot DevTools 3.3+ Development productivity tools

๐Ÿ“Œ API Endpoints

๐Ÿ” Venue Routes

Method Endpoint Description
GET /api/venues List all venues
GET /api/venues/{id} Get venue details
POST /api/venues Create a new venue (Admin)
PATCH /api/venues/{id}/availability Update venue availability

๐Ÿ“… Booking Routes

Method Endpoint Description
POST /api/bookings Book a venue (with availability check)
GET /api/bookings/venue/{id} Get bookings for a venue (admin)
GET /api/bookings/recent Get recent bookings

๐Ÿ“Œ Frontend Route Mapping

๐Ÿ‘ฅ Public/User Routes (PublicLayout)

Frontend Route Component Required API Endpoint(s) HTTP Method(s)
/ HomePage GET /api/venues (featured/latest venues) GET
/venues VenueList GET /api/venues (list all venues) GET
/venues/{venueId} VenueDetails GET /api/venues/{id} (get details of a single venue) GET
/book/{venueId} BookingForm POST /api/bookings (submit booking request)GET /api/venues/{id} (for venue details) GET, POST
/book/{venueId}/success BookingSuccess (Confirmation display) -

๐Ÿ› ๏ธ Admin Routes (AdminLayout)

Frontend Route Component Required API Endpoint(s) HTTP Method(s)
/admin/venues AdminVenueList GET /api/venues (admin list view) GET
/admin/venues/add AddVenueForm POST /api/venues (create new venue) POST
/admin/venues/{id}/availability AvailabilityForm PATCH /api/venues/{id}/availability (update blocked dates)GET /api/venues/{id} (venue info) GET, PATCH
/admin/bookings/recent RecentBookings GET /api/bookings/recent (get recent bookings) GET

๐Ÿงช How to Run Locally

Prerequisites

  • Java 21 LTS installed
  • Node.js 20+ and npm/yarn
  • Maven 3.9+ for dependency management
  • Git for version control

Clone the project

git clone 
cd satyajeet-23-easyvenue

๐Ÿ”ง Backend Setup

cd Backend

# Install dependencies and compile
./mvnw clean install

# Run the application
./mvnw spring-boot:run

The backend will start on http://localhost:8080

Configure Database (Optional)

Update src/main/resources/application.properties:

# For H2 (default - in-memory)
spring.datasource.url=jdbc:h2:mem:testdb
spring.h2.console.enabled=true

# For MySQL (uncomment and configure)
# spring.datasource.url=jdbc:mysql://localhost:3306/easyvenue
# spring.datasource.username=your_username
# spring.datasource.password=your_password

๐ŸŒ Frontend Setup (In another terminal)

cd Frontend

# Install dependencies
npm install

# Create .env file if needed
cp .env.example .env

# Start development server
npm run dev

The frontend runs on http://localhost:5173 and connects to the backend on http://localhost:8080.

๐Ÿ“ธ Screenshots

Home Page - Welcome to EasyVenue

Landing page showcasing featured venues and platform introduction

Home Page Complete listing of all venues with search and filter capabilities

Venue List Page Administrative interface for managing venues and viewing analytics

Admin Venue List Page User-friendly booking form with date selection and venue details

Booking Form Administrative view of recent bookings and booking management

Recent Bookings

Backend Architecture

  • Controllers: Handle HTTP requests and responses with proper status codes
  • Services: Business logic implementation with transaction management
  • Repositories: Data access layer using Spring Data JPA with custom queries
  • Models: JPA entities with proper relationships and validation
  • DTOs: Data Transfer Objects for clean API communication
  • Config: Application configuration and data initialization

Frontend Architecture

  • Layouts: Shared layout components for admin and public views
  • Pages: Route-specific page components with proper state management
  • Components: Reusable UI components following atomic design principles
  • Hooks: Custom React hooks for API calls and state management
  • Services: API client layer with error handling and interceptors

๐Ÿš€ Deployment

Backend Deployment

# Build JAR file
./mvnw clean package

# Run JAR
java -jar target/backend-0.0.1-SNAPSHOT.jar

# Or with profile
java -jar -Dspring.profiles.active=prod target/backend-0.0.1-SNAPSHOT.jar

Frontend Deployment

# Build for production
npm run build

# Preview build locally
npm run preview

# Deploy dist/ folder to your hosting service

๐Ÿ“ƒ Key Features Implemented

  • Modern Java Stack: Spring Boot 3 with Java 21 LTS features
  • RESTful API Design: Clean API endpoints with proper HTTP methods and status codes
  • Data Validation: DTO-based request validation with custom validators
  • Component Architecture: Modular React components with custom hooks
  • Responsive Design: Mobile-first responsive interface
  • Admin Dashboard: Separate admin interface for venue management
  • Real-time Updates: Dynamic venue availability management
  • Error Handling: Comprehensive error handling on both frontend and backend
  • Code Quality: ESLint configuration and clean code practices

๐Ÿ”ฎ Future Enhancements

๐Ÿ” Authentication & Authorization

  • JWT-based authentication with Spring Security
  • Role-based access control (Admin, Venue Owner, User)
  • OAuth2 integration for social login

๐Ÿ“Š Analytics Dashboard

  • Booking analytics and reporting with charts
  • Revenue tracking and financial insights
  • Popular venue insights and recommendations

๐Ÿ“… Advanced Calendar Features

  • Interactive calendar view with drag-and-drop
  • Recurring bookings and time slot management
  • Calendar synchronization with external services

๐Ÿ” Search & Filtering

  • Advanced search capabilities with Elasticsearch
  • Location-based filtering with maps integration
  • Price range filters and sorting options

๐Ÿ”” Notifications

  • Email notifications for bookings
  • Push notifications for admins
  • SMS integration for booking confirmations

๐Ÿง  Development Notes

Backend Best Practices

  • Used Spring Boot 3 with the latest features
  • Implemented proper exception handling with custom exceptions
  • Used DTOs for API communication to avoid entity exposure
  • Configured CORS for frontend-backend communication
  • Implemented proper logging with SLF4J

Frontend Best Practices

  • Used modern React patterns with hooks and functional components
  • Implemented custom hooks for API calls and state management
  • Used Vite for fast development and optimized builds
  • Configured ESLint for code quality and consistency
  • Implemented proper error boundaries and loading states

๐Ÿ‘จ๐Ÿ’ป Author

Satyajeet - Full-stack Java Developer

Built with modern Java Spring Boot Backend and React Frontend, focusing on clean architecture, maintainable code, and industry best practices.

This project demonstrates modern full-stack development practices with Java Spring Boot and React, featuring clean separation of concerns, RESTful API design, responsive user interface, and scalable architecture suitable for production deployment.

About

A Java Based Full-stack Venue Booking Platform built with Java Spring Boot and React. Features Admin Dashboard for Venue Management, User Booking System, and real-time Availability Tracking with Modern UI. Demonstrates complete CRUD Operations and essential Web Application Functionality.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages