Skip to content

MouadHallaffou/Eventbrite

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

119 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎫 Eventbrite - Advanced Event Management Platform

πŸ“‹ Project Context

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.

🎯 Objectives

βœ… 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

πŸš€ Key Features

πŸ‘₯ User Management

βœ” 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)

πŸŽͺ Event Management

βœ” 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)

πŸ’³ Booking & Payment

βœ” 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

πŸ“Š Organizer Dashboard

βœ” 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)

πŸ›‘οΈ Admin Back-Office

βœ” Manage users (ban, delete, modify)
βœ” Manage events (validate, delete, modify)
βœ” Global statistics (users, tickets sold, revenue)
βœ” Content moderation (comments, reports)

⚑ Dynamic Interactions with AJAX

βœ” 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)

πŸ“ Project Structure

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

πŸ“– User Stories

πŸ‘₯ As a Participant, I want to:

βœ… 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

πŸ‘€ As an Organizer, I want to:

βœ… 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

πŸ›‘οΈ As an Administrator, I want to:

βœ… Manage users (ban, modify roles)
βœ… Approve or reject submitted events
βœ… Monitor global statistics and moderate content

πŸ—οΈ Business Logic

πŸ“Œ Role & Permission Management

  • A Participant can only book public events
  • An Organizer can only manage their own events
  • An Admin has full access (validation, moderation, management)

πŸ“Œ Booking System

  • 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)

πŸ“Œ Advanced Security

  • Protection against CSRF and SQL injections
  • Password hashing with bcrypt
  • Secure session management

πŸ“Œ Performance Optimization

  • Optimized PostgreSQL queries with indexes and partitions
  • Lazy loading for events using AJAX

βš™οΈ Installation Guide

  1. Clone the repository:

    git clone https://github.com/MouadHallaffou/Eventbrite.git
  2. Navigate to the project directory:

    cd Eventbrite
  3. Install dependencies:

    composer install
  4. Configure your database in .env:

    DB_DSN = mysql:host=localhost;port=3306;dbname=Eventbrite_db
    DB_USERNAME = your_username
    DB_PASSWORD = your_password # default ''
  5. Start the development server:

    php -S localhost:8000 -t public
  6. Open http://localhost:8000 in your browser

🀝 Contributing

Contributions are welcome! To contribute:

  1. Fork the repository
  2. Create a new branch (feature-name)
  3. Commit your changes and push to your branch
  4. Open a Pull Request

About

Evently 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.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Twig 73.4%
  • PHP 17.1%
  • CSS 8.8%
  • Other 0.7%