A Django-based event management platform that brings people together. Whether you're organizing a tech meetup, workshop, or conference, this system makes it easy to create, manage, and attend events.
The page available at: https://eventmgr.pflaumax.dev/
- What This Project Does
- Key Features
- Tech Stack
- Project Structure
- Screenshots
- Getting Started
- How to Use
- API Endpoints
- Running Tests
- Models Overview
- Development Progress
- Email Configuration
- Contributing
- License
- Design Decisions
- Known Issues
- Support
- Acknowledgments
Think of this as a simplified version of Eventbrite or Meetup. It's designed around two types of users:
- Event Creators who can organize and manage events
- Visitors who can discover and register for events
Your role determines what you can do in the system. Creators focus on organizing, while visitors focus on attending - no confusion, no overlap!
- Create and manage your own events with detailed information
- View only the events you've created
- Edit event details when plans change
- Cancel events if needed (automatically notifies all registered participants)
- Export participant lists as CSV files for easy management
- Browse all available public events with filtering and search
- View detailed event information with registration status
- Register for events you're interested in
- Cancel your registration if you can't make it
- View all events you've signed up for in one place
- Role-based access: You can only do what your role allows
- Email notifications: Get confirmations and updates about events
- Event filtering: Search by status, date, or other criteria
- Image uploads: Add photos to make events more attractive
- Automatic status updates: Events automatically become "completed" after their date
- Email authentication: Login with your email instead of a username
- Responsive design: Works great on mobile and desktop
- Backend: Django (Python web framework)
- Database: PostgreSQL
- Authentication: Custom user model with email login and token verification
- API: Django REST Framework for mobile/integration support
- Frontend: Django templates for responsive design
- Containerization: Docker support for easy deployment
- Testing: Comprehensive unit tests for models and views
event_management/
├── apps/
│ ├── events/ # Everything related to events and registrations
│ └── users/ # User authentication and role management
├── templates/ # HTML templates for the web interface
├── static/ # CSS, JavaScript, and other static files
├── media/ # Uploaded files (like event images)
├── tests/ # Test files to ensure everything works
├── docker-compose.yml # Docker configuration
├── dockerfile # Container setup
└── event_manager/ # Main Django project settings
[I will add screenshots here - suggested shots:]
- Registration page showing role selection
- Event creator dashboard with event management
- Event listing page for visitors with search/filter
- Event detail page with registration button
- Event creation form with image upload
- My registrations page for visitors
- Python 3.8+
- PostgreSQL
- Git
- Docker (optional, for containerized deployment)
-
Clone the repository
git clone https://github.com/pflaumax/event_manager cd event_manager -
Set up your virtual environment
python -m venv event_venv source event_venv/bin/activate # On Windows: event_venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Set up environment variables
cp .env.docker.dev.example .env.docker.dev # Edit .env.docker.dev with your database credentials -
Set up your database
# Make sure PostgreSQL is running python manage.py migrate -
Create a superuser (optional)
python manage.py createsuperuser
-
Start the development server
python manage.py runserver
Visit http://localhost:8000 and you're ready to go!
For a containerized setup:
# Build and run with Docker Compose
cd event_manager
docker compose up --build
# Or run individual commands
docker build -t event_manager .
docker run -p 8000:8000 event_manager- Sign up: Choose whether you're an Event Creator or Visitor during registration
- Verify email: Check your email for a confirmation token
- Log in: Use your email and password
- Explore: Your dashboard will show different options based on your role
- Click "Create Event" to add a new event with description, date, location, and images
- Use "My Events" to view and manage all your created events
- Edit event details or cancel events when needed
- Export participant lists as CSV files for offline management
- Cancelled events automatically notify all registered participants
- Browse the event list with filtering options (status, date, location)
- Use the search functionality to find specific events
- Click "Register" on events you want to attend
- View your registrations in "My Events" section
- Cancel registrations if your plans change
The system includes a full REST API built with Django REST Framework:
POST /api/users/register/- Register UserPOST /api/users/login/- LoginPOST /api/token/- Get authentication token
GET /api/users/profile/- Get ProfilePUT /api/users/profile/- Update Profile (PUT)PATCH /api/users/profile/- Update Profile (PATCH)GET /api/users/my_registrations/- Get My Registrations
GET /api/events/- List All EventsGET /api/events/?status=published- List Events with FiltersGET /api/events/?search=test- Search EventsGET /api/events/?ordering=date- Order EventsPOST /api/events/- Create EventGET /api/events/{id}/- Get Event DetailsPUT /api/events/{id}/- Update Event (PUT)PATCH /api/events/{id}/- Update Event (PATCH)DELETE /api/events/{id}/- Delete Event
GET /api/events/my_events/- Get My Events (Creator Only)GET /api/events/upcoming/- Get Upcoming EventsPOST /api/events/{id}/cancel/- Cancel EventGET /api/events/{id}/registrations/- Get Event Registrations (Creator Only)GET /api/events/stats/- Get Event Statistics (Creator Only)
GET /api/registrations/- List My RegistrationsPOST /api/registrations/- Register for EventGET /api/registrations/{id}/- Get Registration DetailsDELETE /api/registrations/{id}/- Cancel RegistrationGET /api/registrations/upcoming/- Get Upcoming Registrations
GET /api/users/- List All UsersGET /api/users/{id}/- Get User DetailsPUT /api/users/{id}/- Update UserDELETE /api/users/{id}/- Delete User
Full API documentation is available via Postman collection:
- Import the collection: Download the
Event Management API.postman_collection.jsonfile from the repository - Open Postman: Import the collection file into your Postman workspace
- Set environment variables:
base_url: Your API base URL (e.g.,http://localhost:8000)access_token: Will be automatically set after login
- Authentication: Use the "TOKEN" request to get your access token, which will be automatically saved for other requests
The Postman collection includes:
- Pre-configured requests for all endpoints
- Request examples with sample data
- Environment variable management
- Automatic token handling
Alternative: You can also view the API documentation by visiting /api/docs/ when running the server (if DRF documentation is enabled).
The project includes comprehensive tests to ensure everything works correctly:
# Run all tests
python manage.py test
# Run tests for specific app
python manage.py test apps.events
python manage.py test apps.users
# Run with coverage
coverage run manage.py test
coverage report- Email-based authentication with token verification
- Role field (Creator/Visitor)
- Standard Django user fields
- Title, description, date, location
- Creator (foreign key to User)
- Status (published, completed, cancelled)
- Image upload capability
- Automatic status updates
- Links users to events
- Timestamps for registration/cancellation
- Status tracking
- Setup Phase: Virtual environment, Django setup, PostgreSQL configuration
- Database & Models: Custom user model, Event and Registration models
- Authentication: Email-based login, registration with role selection
- Templates & Frontend: Complete web interface for all user roles
- Email Notifications: Account verification, registration confirmations, cancellation alerts
- Enhanced Features: Event filtering, search, image uploads, event editing
- Data Export: CSV export for participant lists
- Testing: Comprehensive unit tests for models and views
- Containerization: Docker support for easy deployment
- API: Full REST API with Django REST Framework
- Responsive Design: Bootstrap integration for mobile-friendly interface
- Performance optimization
- UI/UX improvements
- Event categories and tags
- Attendee limits and waiting lists
- Social features (comments, ratings)
- Payment integration
- Calendar integration
The system uses Django's email backend for notifications:
- Development: Console backend (emails appear in terminal)
- Production: Configure SMTP settings in
settings.pyand.env
Email notifications include:
- Account verification tokens
- Event registration confirmations
- Event cancellation notifications to all participants
This is a portfolio project, but feedback and suggestions are welcome! If you spot a bug or have ideas for improvements:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new features
- Submit a pull request
This project is open source and available under the MIT License.
Instead of giving everyone all permissions, the system uses clear roles. This makes the interface cleaner and prevents confusion - creators focus on creating, visitors focus on attending.
Email is more intuitive than usernames for most people, and it's required for notifications anyway.
The users and events apps keep related functionality organized and make the codebase easier to maintain and extend.
Containerization ensures consistent deployment across different environments and makes it easy for others to run the project.
- Event timezone handling needs improvement
- File upload need configuration
If you run into issues:
- Check the test files for usage examples
- Look at the
tests_model_logic.MDfile for model behavior - Check the
todo.MDfile for known limitations - Review the API documentation in Postman
Built as a portfolio project to demonstrate:
- Django best practices
- Role-based access control
- RESTful API design
- Test-driven development
- Clean code architecture
- Full-stack development skills
Happy event organizing!