Skip to content

Dhruvpatel1804/EventRegistration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎟️ EventRegistration

A Django-powered event booking & management platform β€” inspired by BookMyShow.

Python Django PostgreSQL Docker Nginx MVT Architecture License: MIT


🎭 Browse Events Β· 🎫 Book Tickets Β· πŸ“§ Get Notified Β· πŸ—‚οΈ Manage Attendees β€” all in one platform.


🧭 Overview

EventRegistration is a full-featured, Django-based web application for discovering, booking, and managing events β€” inspired by platforms like BookMyShow. Built entirely on Django's MVT (Model-View-Template) architecture with a PostgreSQL database backend, it provides a seamless experience for three types of users: attendees, organizers, and administrators.

From browsing upcoming events to issuing QR-coded tickets and sending email confirmations, EventRegistration handles the complete event lifecycle in a clean, modular codebase β€” deployed production-ready with Docker and Nginx.


✨ Key Features

πŸ‘€ User App β€” Authentication & Profiles

  • Secure user registration, login & logout (Django built-in auth)
  • Profile management with personal booking history
  • Browse and search events by category, date, or location
  • Register for events and receive instant email confirmation

πŸŽͺ Event App β€” Booking & Ticketing

  • View detailed event pages (description, venue, date, capacity, pricing)
  • Real-time seat/ticket availability tracking
  • Category and tag-based event filtering
  • Email delivery of ticket with embedded QR code

πŸ§‘β€πŸ’Ό Organizer App β€” Event Management

  • Create, edit, and delete events with full detail control
  • Set ticket limits, pricing tiers, and event metadata
  • View and manage the full list of registered attendees
  • Dashboard overview of event-wise registration stats

βš™οΈ Admin Dashboard

  • Django Admin panel with super-user control over all models
  • Manage users, organizers, events, and registrations centrally
  • Monitor platform activity and manually intervene when needed

πŸ—οΈ Architecture

EventRegistration follows Django's MVT (Model–View–Template) pattern across three dedicated apps:

EventRegistration/
β”‚
β”œβ”€β”€ eventregistration/          # Project root (settings, urls, wsgi)
β”‚   β”œβ”€β”€ settings.py
β”‚   β”œβ”€β”€ urls.py
β”‚   └── wsgi.py
β”‚
β”œβ”€β”€ userapp/                    # πŸ‘€ User auth, profiles & booking history
β”‚   β”œβ”€β”€ models.py               #    Custom User / UserProfile model
β”‚   β”œβ”€β”€ views.py                #    Register, Login, Profile views
β”‚   β”œβ”€β”€ urls.py
β”‚   └── templates/userapp/
β”‚
β”œβ”€β”€ eventapp/                   # πŸŽͺ Event listing, booking & QR tickets
β”‚   β”œβ”€β”€ models.py               #    Event, Registration, Ticket models
β”‚   β”œβ”€β”€ views.py                #    Event list, detail, booking views
β”‚   β”œβ”€β”€ urls.py
β”‚   └── templates/eventapp/
β”‚
β”œβ”€β”€ organizerapp/               # πŸ§‘β€πŸ’Ό Organizer dashboard & event mgmt
β”‚   β”œβ”€β”€ models.py               #    Organizer profile model
β”‚   β”œβ”€β”€ views.py                #    Create/edit events, attendee views
β”‚   β”œβ”€β”€ urls.py
β”‚   └── templates/organizerapp/
β”‚
β”œβ”€β”€ templates/                  # Shared base templates & layouts
β”œβ”€β”€ static/                     # CSS, JS, images
β”œβ”€β”€ media/                      # Uploaded event banners & QR codes
β”œβ”€β”€ docker-compose.yaml
β”œβ”€β”€ nginx/
β”‚   └── nginx.conf
β”œβ”€β”€ manage.py
└── requirements.txt

MVT Request Flow

Browser Request
      β”‚
      β–Ό
   urls.py  ──────▢  View (views.py)
                          β”‚
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β–Ό                     β–Ό
          Model (ORM)          Template (.html)
        (PostgreSQL)         (Rendered Response)
               β”‚
               β–Ό
        Email + QR Code
          (on booking)

πŸ—ƒοΈ Data Models

userapp

Model Key Fields
UserProfile user (FK→User), phone, avatar, created_at

eventapp

Model Key Fields
Event title, description, venue, date, capacity, price, category, organizer (FK)
Registration user (FK), event (FK), registered_at, status
Ticket registration (FK), ticket_number, qr_code (ImageField), issued_at
Category name, slug

organizerapp

Model Key Fields
Organizer user (FK→User), organization_name, bio, verified

πŸ“§ Email & QR Code Flow

User books a ticket
        β”‚
        β–Ό
 Registration saved to PostgreSQL
        β”‚
        β–Ό
 Unique ticket number generated
        β”‚
        β–Ό
 QR code image created (encodes ticket ID + event details)
        β”‚
        β–Ό
 Confirmation email dispatched via Django SMTP backend
 └── Subject : "Your ticket for <Event Name>"
 └── Body    : Event details + attendee info
 └── Attach  : QR code image (PNG)

πŸš€ Getting Started

Prerequisites

1. Clone the repository

git clone https://github.com/yourusername/EventRegistration.git
cd EventRegistration

2. Configure environment variables

cp .env.example .env
# .env
DEBUG=False
SECRET_KEY=your-secret-key-here

# PostgreSQL
DATABASE_URL=postgresql://postgres:password@db:5432/eventregistration

# Email β€” Gmail SMTP example
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=[email protected]
EMAIL_HOST_PASSWORD=your-app-password
DEFAULT_FROM_EMAIL=EventRegistration <[email protected]>

ALLOWED_HOSTS=localhost,127.0.0.1

3. Build and launch with Docker

docker compose up -d --build

4. Run database migrations

docker compose exec web python manage.py migrate

5. Create a superuser

docker compose exec web python manage.py createsuperuser
Service URL
πŸ–₯️ Application http://localhost
πŸ” Admin Panel http://localhost/admin/
πŸ—„οΈ PostgreSQL localhost:5432

🐳 Docker & Nginx Setup

# docker-compose.yaml (overview)
services:
  web:      # Django application served via Gunicorn
  db:       # PostgreSQL 14 database
  nginx:    # Reverse proxy on port 80, serves static & media files
# nginx/nginx.conf (overview)
server {
    listen 80;
    location /       { proxy_pass http://web:8000; }
    location /static/ { alias /app/static/; }
    location /media/  { alias /app/media/; }
}

πŸ› οΈ Tech Stack

Layer Technology
Language Python 3.11+
Framework Django 4.x (MVT)
Frontend Django Templates, HTML5, CSS3, Bootstrap
Database PostgreSQL 14
Auth Django built-in authentication
Email Django SMTP email backend
Web Server Gunicorn + Nginx
Containerization Docker & Docker Compose
Admin Django Admin

πŸ“Έ Screenshots

Add screenshots here to make your portfolio stand out.

Page Preview
🏠 Event Listing / Homepage (Add screenshot)
πŸŽͺ Event Detail & Booking (Add screenshot)
🎫 QR Code Ticket (Add screenshot)
πŸ“§ Booking Confirmation Email (Add screenshot)
πŸ§‘β€πŸ’Ό Organizer Dashboard (Add screenshot)
πŸ” Django Admin Panel (Add screenshot)

🀝 Contributing

Contributions and feedback are welcome!

git checkout -b feature/your-feature
git commit -m "feat: describe your change"
git push origin feature/your-feature

πŸ‘¨β€πŸ’» Author

Crafted with ❀️ and Django magic.
Connect with me on LinkedIn Β· GitHub


⭐ Star this repo if it helped or inspired you!

About

EventRegistration: A Django-based platform for seamless event registration and management, inspired by BookMyShow, facilitating easy event booking, ticketing, and attendee management.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors