A modern, full-featured event reservation and management system built with Laravel and React (Inertia.js). This application allows customers to book events at Inwood Tavern while providing administrators with powerful tools to manage reservations, payments, and analytics.
- User Authentication - Secure registration and login with modern UI
- Event Reservations - Create and manage event bookings with customization options
- Real-time Dashboard - View reservation status, notifications, and event summary
- Payment Integration - Secure online payment processing with receipt generation
- Notification System - Real-time updates on reservation status changes
- Responsive Design - Beautiful, mobile-friendly interface with amber/orange theme
- Admin Dashboard - Comprehensive analytics and reservation overview
- Reservation Management - Approve, decline, or delete reservations
- Payment Tracking - Monitor all payments and transaction history
- Receipt Management - View and manage payment receipts
- Analytics - Monthly trends, revenue tracking, and event type statistics
- User Management - View and manage customer accounts
- Backend: Laravel 11.x
- Frontend: React 18 with Inertia.js
- Styling: Tailwind CSS
- Database: SQLite (development) / MySQL/PostgreSQL (production)
- Icons: Lucide React
- PDF Generation: DomPDF
- PHP >= 8.2
- Composer
- Node.js >= 18.x
- NPM or Yarn
git clone <repository-url>
cd reserve-easecomposer installnpm installcp .env.example .env
php artisan key:generateEdit .env file and set your database credentials:
DB_CONNECTION=sqlite
# Or for MySQL/PostgreSQL:
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=reserve_ease
# DB_USERNAME=root
# DB_PASSWORD=php artisan migratephp artisan db:seednpm run build
# Or for development with hot reload:
npm run devphp artisan serveVisit http://localhost:8000 in your browser.
After seeding, you can login with:
- Email: admin@example.com
- Password: password
reserve-ease/
├── app/
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── AdminController.php
│ │ │ ├── ReservationController.php
│ │ │ ├── PaymentController.php
│ │ │ └── ReceiptController.php
│ │ └── Middleware/
│ │ └── AdminMiddleware.php
│ ├── Models/
│ │ ├── User.php
│ │ ├── Reservation.php
│ │ ├── Payment.php
│ │ ├── Receipt.php
│ │ └── Notification.php
│ └── Services/
│ └── PaymentService.php
├── resources/
│ ├── js/
│ │ ├── Components/
│ │ │ ├── CreateReservationModal.jsx
│ │ │ ├── AnalyticsDashboard.jsx
│ │ │ └── ...
│ │ ├── Layouts/
│ │ │ ├── AuthenticatedLayout.jsx
│ │ │ └── GuestLayout.jsx
│ │ └── Pages/
│ │ ├── Auth/
│ │ │ ├── Login.jsx
│ │ │ └── Register.jsx
│ │ ├── Admin/
│ │ │ ├── Index.jsx
│ │ │ ├── Reservations.jsx
│ │ │ ├── Payments.jsx
│ │ │ └── Analytics.jsx
│ │ ├── Dashboard.jsx
│ │ └── Reservations/
│ └── views/
│ └── receipts/
│ └── payment.blade.php
├── routes/
│ ├── web.php
│ └── api.php
└── database/
└── migrations/
Users can create reservations with:
- Event type selection
- Date and time
- Guest count
- Venue selection
- Custom requirements/notes
- Automatic pricing calculation
- Secure payment processing
- Multiple payment methods support
- Automatic receipt generation
- Payment status tracking
- PDF receipt downloads
Access admin features at /admin:
- Dashboard with key metrics
- Reservation approval workflow
- Payment monitoring
- Analytics and reporting
- User management
Real-time notifications for:
- Reservation status changes
- Payment confirmations
- Admin actions
- System updates
GET /api/user/reservations- Get user's reservationsGET /api/user/notifications- Get user's notifications
GET /admin- Admin dashboardGET /admin/reservations- Manage reservationsPOST /admin/reservations/{id}/approve- Approve reservationPOST /admin/reservations/{id}/decline- Decline reservationDELETE /admin/reservations/{id}- Delete reservationGET /admin/payments- View all paymentsGET /admin/analytics- View analytics
php artisan test# PHP
./vendor/bin/pint
# JavaScript
npm run lintnpm run build
php artisan optimizeKey environment variables:
APP_NAME="Inwood Tavern"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost
DB_CONNECTION=sqlite
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025Issue: White screen after login
- Solution: Run
npm run buildand clear browser cache
Issue: Database connection error
- Solution: Check
.envdatabase credentials and runphp artisan migrate
Issue: Permission denied errors
- Solution: Set proper permissions:
chmod -R 775 storage bootstrap/cache
Issue: Assets not loading
- Solution: Run
npm run buildandphp artisan storage:link
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is proprietary software developed for Inwood Tavern.
For support, email support@inwoodtavern.com or contact the development team.
- Built with Laravel
- UI powered by React and Inertia.js
- Styled with Tailwind CSS
- Icons by Lucide