A comprehensive full-stack room booking application with advanced features for property management, customer management, and booking operations.
- Room Management: Complete CRUD operations for rooms with configurations
- Customer Management: Customer profiles with ID proof verification
- Booking System: Advanced booking management with availability checking
- Payment Processing: Payment tracking with screenshot uploads
- Invoice Generation: Automated invoice creation and PDF generation
- Dashboard Analytics: Comprehensive statistics and reporting
- Room Availability Validation: Prevents double bookings with real-time conflict detection
- Excel-Style Booking Grid: Visual calendar view with horizontal scrolling
- Customer Booking History: Expandable dropdown showing complete booking history
- ID Proof Management: Multiple ID proof uploads with thumbnail previews
- Dynamic Pricing: Room configurations with person-based pricing
- Responsive Design: Mobile-optimized interfaces for all user types
- Real-time Notifications: Custom popup modals for user feedback
- Staff Dashboard: Complete booking management with Excel-style grid
- Customer Portal: Airbnb-style interface with room browsing
- Mobile Interface: Touch-optimized mobile booking screens
- Caretaker Interface: Simplified interface for property caretakers
- Backend: Spring Boot (Java 17), PostgreSQL, JPA/Hibernate
- Frontend: React.js, CSS3, Responsive Design
- Authentication: JWT (JSON Web Tokens)
- File Storage: Cloudinary (Image and PDF uploads)
- Deployment: Docker, Railway/Render
- API Documentation: OpenAPI 3.0 (Swagger)
- Java 17+
- Node.js 18+
- Maven 3.6+
- PostgreSQL 12+
- Cloudinary account (for file uploads)
cd server
mvn clean install
# Run ProfprideApplication.javacd web-client
npm install
npm startCreate application-prod.properties with:
# Database
spring.datasource.url=jdbc:postgresql://localhost:5432/roombooking
spring.datasource.username=your_username
spring.datasource.password=your_password
# Cloudinary
cloudinary.cloud_name=your_cloud_name
cloudinary.api_key=your_api_key
cloudinary.api_secret=your_api_secret
# JWT
jwt.secret=your_jwt_secret
jwt.expiration=86400000- Production:
https://your-service.onrender.com/api/v1 - Local:
http://localhost:8082/api/v1
- Staff:
Authorization: Bearer staff_token - Customer:
Authorization: Bearer customer_token_{phoneNumber}
GET /bookings→ List all bookingsPOST /bookings→ Create booking (with availability validation)PUT /bookings/{id}→ Update booking (with conflict checking)DELETE /bookings/{id}→ Delete bookingGET /bookings/customer/{phoneNumber}→ Customer booking historyPATCH /bookings/{id}/checkin→ Check-in customerPATCH /bookings/{id}/checkout→ Check-out customer
Room Availability Validation: All booking creation/updates automatically check for conflicts and return 409 Conflict if room is already booked.
GET /rooms→ List all roomsPOST /rooms→ Create roomGET /rooms/check-availability→ Check availability for datesGET /rooms/{id}/configurations→ Get room configurations
GET /customer→ List customers with booking historyPOST /customer→ Create customerPUT /customer/{phoneNumber}→ Update customerPOST /customer/{phoneNumber}/upload-id-proofs→ Upload ID proofsGET /customer/{phoneNumber}/bookings→ Get customer bookings
POST /payments→ Create paymentPOST /payments/upload-screenshot→ Upload payment screenshotGET /payments/booking/{bookingId}→ Get booking payments
GET /invoices/{bookingId}/preview→ Preview invoice (HTML)GET /invoices/{bookingId}/download→ Download invoice (PDF)
- Excel-Style Booking Grid: Visual calendar with horizontal scrolling
- Customer Management: Table with ID proof thumbnails and booking history
- Room Management: Complete room and configuration management
- Payment Tracking: Payment management with screenshot uploads
- Statistics Dashboard: Comprehensive analytics and reporting
- Airbnb-Style Interface: Modern, responsive design
- Room Browsing: Filter by dates, guests, and availability
- Dynamic Pricing: Real-time pricing calculation
- Booking Requests: Submit and track booking requests
- Profile Management: Update profile and view booking history
- Touch-Optimized: Mobile-first design
- Responsive Grid: Adapts to all screen sizes
- Gesture Support: Swipe and touch interactions
- Offline Capability: Basic functionality without internet
- Real-time Validation: Prevents double bookings
- Conflict Detection: Checks date overlaps
- Status-based Filtering: Only considers CONFIRMED bookings
- User-friendly Errors: Custom popup modals for conflicts
- Multiple Uploads: Support for multiple ID proofs per customer
- Thumbnail Previews: Visual previews in customer table
- Cloudinary Integration: Secure cloud storage
- Status Tracking: Visual indicators for ID proof submission
- Horizontal Scrolling: Full month view with scroll
- Fixed Cell Sizes: Consistent layout across devices
- Status Color Coding: Visual status indicators
- Click-to-View: Detailed booking information on click
- Room Configurations: Person-based pricing
- Daily/Monthly Rates: Flexible pricing models
- Real-time Calculation: Live pricing updates
- Cost Breakdown: Detailed cost analysis
- Desktop: 1200px+ (Full Excel grid)
- Tablet: 768px-1199px (Compressed grid)
- Mobile: <768px (Stacked layout)
- Touch Navigation: Swipe gestures
- Optimized Forms: Mobile-friendly inputs
- Compressed Views: Space-efficient layouts
- Quick Actions: One-tap operations
- JWT Tokens: Secure token-based authentication
- Role-based Access: Staff vs Customer permissions
- Token Expiration: Automatic session management
- Input Validation: Server-side validation
- SQL Injection Prevention: JPA/Hibernate protection
- File Upload Security: Type and size validation
- CORS Configuration: Cross-origin request handling
- Today's Summary: Check-ins, check-outs, revenue
- Room Occupancy: Occupancy rates and trends
- Payment Analytics: Payment status and amounts
- Customer Statistics: Registration and activity metrics
- Invoice PDFs: Professional invoice generation
- Booking Reports: Detailed booking analytics
- Customer Reports: Customer activity summaries
# Build and run with Docker
docker-compose up --buildDATABASE_URL: PostgreSQL connection stringCLOUDINARY_URL: Cloudinary configurationJWT_SECRET: JWT signing secretPORT: Server port (default: 8082)
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Check the API documentation
- Review the OpenAPI specification
- ✅ Room availability validation system
- ✅ Excel-style booking grid with horizontal scrolling
- ✅ Customer booking history dropdown
- ✅ ID proof management with thumbnails
- ✅ Dynamic pricing system
- ✅ Custom conflict popup modals
- ✅ Mobile-optimized interfaces
- ✅ Comprehensive invoice generation
- ✅ Real-time booking conflict detection
- ✅ Airbnb-style customer portal
- ✅ Responsive design implementation
- ✅ Payment screenshot uploads
- ✅ Enhanced booking management
- ✅ Statistics dashboard
- ✅ Basic booking system
- ✅ Customer management
- ✅ Payment tracking
- ✅ Room management
- ✅ Authentication system