π Browse Events Β· π« Book Tickets Β· π§ Get Notified Β· ποΈ Manage Attendees β all in one platform.
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.
- 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
- 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
- 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
- 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
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
Browser Request
β
βΌ
urls.py βββββββΆ View (views.py)
β
ββββββββββββ΄βββββββββββ
βΌ βΌ
Model (ORM) Template (.html)
(PostgreSQL) (Rendered Response)
β
βΌ
Email + QR Code
(on booking)
| Model | Key Fields |
|---|---|
UserProfile |
user (FKβUser), phone, avatar, created_at |
| 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 |
| Model | Key Fields |
|---|---|
Organizer |
user (FKβUser), organization_name, bio, verified |
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)
git clone https://github.com/yourusername/EventRegistration.git
cd EventRegistrationcp .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.1docker compose up -d --builddocker compose exec web python manage.py migratedocker compose exec web python manage.py createsuperuser| Service | URL |
|---|---|
| π₯οΈ Application | http://localhost |
| π Admin Panel | http://localhost/admin/ |
| ποΈ PostgreSQL | localhost:5432 |
# 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/; }
}| 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 |
| Django SMTP email backend | |
| Web Server | Gunicorn + Nginx |
| Containerization | Docker & Docker Compose |
| Admin | Django Admin |
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) |
Contributions and feedback are welcome!
git checkout -b feature/your-feature
git commit -m "feat: describe your change"
git push origin feature/your-featureCrafted with β€οΈ and Django magic.
Connect with me on LinkedIn Β· GitHub
β Star this repo if it helped or inspired you!