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.
- 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
- 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
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 / 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 |
| 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 |
| 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 |
| 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 | 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) | - |
| 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 |
- Java 21 LTS installed
- Node.js 20+ and npm/yarn
- Maven 3.9+ for dependency management
- Git for version control
git clone
cd satyajeet-23-easyvenuecd Backend
# Install dependencies and compile
./mvnw clean install
# Run the application
./mvnw spring-boot:runThe backend will start on http://localhost:8080
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_passwordcd Frontend
# Install dependencies
npm install
# Create .env file if needed
cp .env.example .env
# Start development server
npm run devThe frontend runs on http://localhost:5173 and connects to the backend on http://localhost:8080.
Landing page showcasing featured venues and platform introduction
Complete listing of all venues with search and filter capabilities
Administrative interface for managing venues and viewing analytics
User-friendly booking form with date selection and venue details
Administrative view of recent bookings and booking management
- 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
- 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
# 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# Build for production
npm run build
# Preview build locally
npm run preview
# Deploy dist/ folder to your hosting service- 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
- JWT-based authentication with Spring Security
- Role-based access control (Admin, Venue Owner, User)
- OAuth2 integration for social login
- Booking analytics and reporting with charts
- Revenue tracking and financial insights
- Popular venue insights and recommendations
- Interactive calendar view with drag-and-drop
- Recurring bookings and time slot management
- Calendar synchronization with external services
- Advanced search capabilities with Elasticsearch
- Location-based filtering with maps integration
- Price range filters and sorting options
- Email notifications for bookings
- Push notifications for admins
- SMS integration for booking confirmations
- 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
- 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
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.
