Eventbrite is a comprehensive platform that enables organizers to create, manage, and promote both online and in-person events. Integrated with Stripe, it offers a seamless and secure ticket purchasing experience for participants.
This project aims to develop an advanced Eventbrite clone by following best practices in PHP MVC with PostgreSQL and integrating AJAX for dynamic interactions.
β
Organizers can publish and manage events
β
Participants can book tickets online
β
An admin back-office allows management of users and events
β
Advanced statistics provide detailed insights into events and sales
β Secure registration and login (email, password hashed with bcrypt)
β Role management: Organizer, Participant, Admin
β User profile (avatar, name, event history)
β Notification system (email, site alerts)
β Create and edit events (title, description, date, location, price, capacity)
β Manage categories and tags (Conference, Concert, Sports, etc.)
β Add promotional images and videos
β Event validation by an administrator
β Featured event system (sponsored events)
β Purchase tickets with different options (free, paid, VIP, early bird)
β Secure payment via Stripe or PayPal (sandbox mode)
β Generate QR codes for ticket validation at entry
β Refund and ticket cancellation system
β Download tickets as PDFs after purchase
β List of created events with status (active, pending, completed)
β Real-time sales and booking statistics
β Export participants list in CSV/PDF format
β Manage promotions and discounts (promo codes, early bird offers)
β Manage users (ban, delete, modify)
β Manage events (validate, delete, modify)
β Global statistics (users, tickets sold, revenue)
β Content moderation (comments, reports)
β Dynamic event loading (pagination without reloading)
β Advanced search and filters (category, price, date, location)
β Search autocomplete with suggestions
β Real-time form validation (email availability, password security)
app/
βββ config/ # Database configuration
β βββ Database.php # Database connection setup
β βββ database.sql # Database schema
βββ controllers/ # Application logic
β βββ Authentication/ # Login/Register functionality
β β βββ AuthController.php
β βββ backOffice/ # Admin panel controllers
β β βββ AdminController.php
β β βββ OrganizerController.php
β β βββ ParticipantController.php
β β βββ UserController.php
β βββ FrontOffice/ # Public-facing controllers
β βββ blogController.php
β βββ contactController.php
β βββ EventController.php
β βββ HomeController.php
βββ core/ # Core framework files
β βββ Auth.php # Authentication handler
β βββ Controller.php # Base controller class
β βββ Router.php # URL routing
β βββ Security.php # Security utilities
β βββ Session.php # Session management
β βββ Validator.php # Input validation
βββ views/ # Twig templates
β βββ Authentication/ # Login/Register pages
β βββ back/Admin/ # Admin dashboard
β βββ organiser/ # Event organizer interface
β βββ participant/ # Participant views
β βββ Profile/ # User profile pages
βββ public/ # Web-accessible files
β βββ assets/ # CSS, JS, images
β βββ component/ # Reusable components
β βββ .htaccess # Apache configuration
β βββ index.php # Application entry point
βββ vendor/ # Composer dependencies
β
Create an account and log in with email or Google/Facebook
β
Browse and filter event listings by category
β
Book a ticket online and receive a QR code
β
Cancel my reservation and request a refund
β
Receive notifications for upcoming events
β
Publish an event and set ticket prices
β
Manage my sales and view registration statistics
β
Offer promo codes and manage discounts
β
Export participant lists in CSV or PDF format
β
Manage users (ban, modify roles)
β
Approve or reject submitted events
β
Monitor global statistics and moderate content
- A Participant can only book public events
- An Organizer can only manage their own events
- An Admin has full access (validation, moderation, management)
- Verifies ticket availability before confirmation
- Sends an email with the ticket as an attachment after purchase
- Allows cancellations under specific conditions (partial or full refund)
- Protection against CSRF and SQL injections
- Password hashing with bcrypt
- Secure session management
- Optimized PostgreSQL queries with indexes and partitions
- Lazy loading for events using AJAX
-
Clone the repository:
git clone https://github.com/MouadHallaffou/Eventbrite.git
-
Navigate to the project directory:
cd Eventbrite -
Install dependencies:
composer install
-
Configure your database in .env:
DB_DSN = mysql:host=localhost;port=3306;dbname=Eventbrite_db DB_USERNAME = your_username DB_PASSWORD = your_password # default ''
-
Start the development server:
php -S localhost:8000 -t public
-
Open http://localhost:8000 in your browser
Contributions are welcome! To contribute:
- Fork the repository
- Create a new branch (
feature-name) - Commit your changes and push to your branch
- Open a Pull Request