A full-stack Event Management web application built with Django (MVT). Clean, modular, and production-ready — featuring event CRUD, role-based dashboards, RSVP, email activation, and more.
🔗 Live Demo: event-management-system-v44p.onrender.com
📁 Source Code: GitHub Repository
Event-Zone is a Django-based Event Management System that follows the Model-View-Template (MVT) pattern. It was designed to be beginner-friendly, extendable, and ready for production deployment. The project includes user authentication, role-based access (organizer/participant), event creation and management, RSVP flow, email activation, and admin dashboards.
- User authentication (register / login / logout)
- Email-based account activation
- Role-based dashboards (organizer vs participant)
- Create / read / update / delete events and categories
- RSVP to events (participant flow)
- Event lists, detail pages, and search/filtering
- Admin panel for site management
- Static file handling using WhiteNoise
- Support for PostgreSQL (production) and SQLite (development)
- Faker for generating sample data during development
- Framework: Django 5.1.5
- Database: PostgreSQL
- Authentication: Django Auth System
- File Storage: Whitenoise for static files
- Templating: Django Templates
- Styling: CSS3 with responsive design
- JavaScript: Vanilla JS for interactivity
- Environment Management: python-decouple
- Database ORM: Django ORM
- Static Files: Whitenoise
- Deployment: Render.com
- Python 3.8 or higher
- PostgreSQL
- pip (Python package manager)
-
Clone the repository
git clone https://github.com/anis191/Event-Management-System.git cd Event-Management-System -
Create a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install --upgrade pip pip install -r requirements.txt
-
Environment Configuration Create a
.envfile in the project root:DEBUG=True SECRET_KEY=your-secret-key-here DATABASE_URL=postgres://username:password@localhost:5432/event_zone ALLOWED_HOSTS=localhost,127.0.0.1
-
Database Setup
python manage.py migrate python manage.py createsuperuser
-
Load Sample Data (Optional)
python manage.py loaddata sample_data.json
-
Run Development Server
python manage.py runserver
Visit http://127.0.0.1:8000 to view the application.
Event-Management-System/
├── event_zone/ # Main project directory
│ ├── settings.py # Project settings
│ ├── urls.py # Main URL configuration
│ └── wsgi.py # WSGI configuration
├── events/ # Events app
│ ├── models.py # Event models
│ ├── views.py # Event views
│ ├── urls.py # Event URLs
│ └── templates/ # Event templates
├── users/ # Users app
│ ├── models.py # User models
│ ├── views.py # User views
│ └── templates/ # User templates
├── static/ # Static files
│ ├── css/ # CSS files
│ ├── js/ # JavaScript files
│ └── images/ # Image assets
├── media/ # User uploaded files
├── requirements.txt # Project dependencies
└── manage.py # Django management script
-
Migrations
- Run
python manage.py makemigrationsandpython manage.py migrateas needed.
- Run
-
Static files
-
For production, run:
python manage.py collectstatic --noinput
-
The project uses WhiteNoise to serve static files in production (no separate web server required for static content).
-
Below are general steps — adapt to your chosen host (e.g. Render, Heroku, Railway, etc).
-
Push repository to GitHub.
-
Create a new web service on your host and connect GitHub repo.
-
Set environment variables on the host (SECRET_KEY, DEBUG=false, DATABASE_URL, ALLOWED_HOSTS, EMAIL_*).
-
Ensure build and start commands include collecting static files and running migrations:
-
Example Build Command:
pip install -r requirements.txt python manage.py migrate python manage.py collectstatic --noinput
-
Example Start Command (Gunicorn):
gunicorn <your_django_project>.wsgi:application --bind 0.0.0.0:$PORTReplace
<your_django_project>with the actual project package name (the one withsettings.pyinside).
-
Render-specific tips
- Create a PostgreSQL instance and set
DATABASE_URL. - Add
python manage.py collectstatic --noinputas part of build or start process. - Ensure
ALLOWED_HOSTSincludes your Render domain.
1. TemplateSyntaxError: <ExtendsNode: extends "..." > must be the first tag in the template.
- Cause: You have
{% load static %}or another tag before{% extends "base.html" %}. - Fix: Ensure
{% extends %}is the first tag (first non-whitespace code) in the child template. Move{% load static %}into the base template (or place it after{% extends %}in the child).
2. Static files not loading in production
- Ensure
collectstaticwas run andwhitenoiseis configured inMIDDLEWARE. - Confirm
STATIC_ROOTis set in settings and that your host serves collected static files.
3. Database connection errors on deploy
- Verify
DATABASE_URLsyntax and credentials. - Ensure the host firewall / DB service allows remote connections if applicable.
4. Email not sending
- Double-check SMTP credentials and ports.
- Check host provider restrictions (some hosts block SMTP ports by default).
If you run into other errors, check Django logs and traceback in the server console — they reveal the specific file/line to fix.
Contributions are welcome! If you'd like to help:
- Fork the repository.
- Create a feature branch:
git checkout -b feat/your-feature. - Make your changes and add tests where applicable.
- Open a pull request describing your change.
Please follow consistent code style and include a descriptive commit message.
License: MIT License – This project is open source and available under the MIT license.
Anisul Alam
Full-Stack Developer | Django | React | PostgreSQL