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)
- ✅ 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_usrename
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