A comprehensive event ticketing platform built with Laravel, featuring a multi-application architecture for admin management, API services, and user interface.
e-tickets App is a full-stack event management and ticketing system that allows organizers to create and manage events, while users can browse, purchase tickets, and manage their bookings. The platform supports secure payments, user authentication, and administrative oversight through a dedicated panel.
The application solves the problem of fragmented event management by providing an integrated solution for event creation, ticket sales, and attendee management, with a focus on scalability and ease of use.
- Event Management: Create, update, and manage events with details like dates, locations, pricing, and categories
- Ticketing System: Sell tickets with configurable limits and purchase deadlines
- Payment Processing: Secure payments via Stripe integration
- User Authentication: SSO authentication using WorkOS
- Admin Panel: Comprehensive admin interface built with Filament for managing all aspects of the platform
- API Services: RESTful API for frontend integration and third-party access
- Responsive UI: Modern, responsive user interface for event browsing and ticket purchasing
- MongoDB Integration: NoSQL database for flexible data storage
- Real-time Monitoring: Laravel Telescope for debugging and performance monitoring
- Backend: Laravel 12 (PHP 8.2+)
- Database: MongoDB
- Frontend: Livewire, Tailwind CSS, Vite
- Admin Panel: Filament 3
- Authentication: WorkOS
- Payments: Stripe
- API Documentation: Scramble
- Testing: Pest
- Development Tools: Laravel Sail, Laravel Pint
- PHP 8.2 or higher
- Composer
- Node.js and npm
- MongoDB
- Stripe account (for payments)
- WorkOS account (for authentication)
-
Clone the repository:
git clone https://github.com/innocentmisheck/e-tickets-app.git cd e-tickets-app -
Set up each application:
For each of the
admin,api, anduidirectories:cd admin # or api, or ui composer install npm install cp .env.example .env
-
Configure environment variables:
Update the
.envfiles in each directory with appropriate values:- Database connection (MongoDB for API, SQLite/MySQL for others)
- Stripe API keys
- WorkOS configuration
- Application URLs and ports
-
Generate application keys:
php artisan key:generate
-
Run database migrations (for each app):
php artisan migrate
-
Build assets (for each app):
npm run build
To run the applications in development mode:
-
Start the API server:
cd api php artisan serve --host=127.0.0.1 --port=8001 -
Start the Admin panel:
cd admin php artisan serve --host=127.0.0.1 --port=8002 -
Start the UI application:
cd ui php artisan serve --host=127.0.0.1 --port=8003 -
Build assets for development (in separate terminals):
cd admin && npm run dev cd api && npm run dev cd ui && npm run dev
Access the admin panel at http://127.0.0.1:8002 to manage events, users, transactions, and system settings.
The API provides endpoints for:
- Event management (
/api/events) - Ticket operations (
/api/tickets) - Payment processing (
/api/payments) - User management (
/api/users)
API documentation is available via Scramble at the API root URL.
e-tickets-app/
├── admin/ # Admin panel application (Filament)
│ ├── app/
│ │ ├── Filament/Resources/ # Admin resources
│ │ └── Models/ # Eloquent models
│ ├── database/migrations/ # Database migrations
│ └── routes/ # Web routes
├── api/ # API backend application
│ ├── app/
│ │ ├── Http/Controllers/Api/ # API controllers
│ │ └── Models/ # Models with MongoDB
│ ├── config/ # Configuration files
│ └── routes/ # API routes
└── ui/ # User interface application
├── app/
│ ├── Livewire/ # Livewire components
│ └── Models/ # Models
├── resources/views/ # Blade templates
└── routes/ # Web routes
Key configuration options across applications:
DB_CONNECTION: Database driver (mongodb for API, sqlite/mysql for others)MONGODB_URI: MongoDB connection stringSTRIPE_KEY: Stripe public keySTRIPE_SECRET: Stripe secret keyWORKOS_API_KEY: WorkOS API keyWORKOS_CLIENT_ID: WorkOS client ID
The API uses MongoDB for flexible document storage, while admin and UI applications can use traditional relational databases.
The API provides RESTful endpoints for event management, ticketing, and payments. Detailed API documentation is generated using Scramble and available at the API application's root URL when running in development mode.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Run tests for each application:
cd admin # or api, or ui
./vendor/bin/pest- Configure production database connections
- Set up proper environment variables
- Use Laravel's built-in caching and queue systems
- Configure web server (Nginx/Apache) for each application
- Set up SSL certificates
- Configure MongoDB for production use
While no Docker configuration is present, deployment could be containerized using Docker Compose with separate containers for each application, MongoDB, and Redis.
This project is licensed under the MIT License - see the composer.json files for details.
- innocentmisheck - Repository owner and maintainer