This is a simple backend API for managing events, users, speakers, and registrations. Built with FastAPI, it supports user registration, event creation, RSVP tracking, and attendance recording — all stored in-memory using Python dictionaries.
- CRUD operations for Users and Events
- Fixed Speaker list initialized on startup
- User registration for events (only once per event)
- Attendance marking for registered users
- User deactivation
- Filter for users who have attended at least one event
- Python 3.10+
- FastAPI
- Uvicorn
- Pydantic
git clone https://github.com/your-username/event-management-api.git
cd event-management-apipython -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activatepip install fastapi uvicornuvicorn main:app --reloadThis will start the server at:
http://127.0.0.1:8000
FastAPI provides auto-generated docs:
- Swagger UI: http://127.0.0.1:8000/docs
- ReDoc: http://127.0.0.1:8000/redoc
To pre-populate test data, add the following snippet to main.py after router imports:
from database import users, events, registrations
from schemas.user import User
from schemas.event import Event
from schemas.registration import Registration
from datetime import date, datetime
users[1] = User(id=1, name="Jane Doe", email="jane@example.com")
users[2] = User(id=2, name="John Smith", email="john@example.com")
events[1] = Event(id=1, title="Tech Summit", location="Lagos", date=date.today())
registrations[1] = Registration(id=1, user_id=1, event_id=1, registration_date=datetime.utcnow(), attended=True).
├── main.py
├── database.py
├── models.py
├── README.md
├── routes/
│ ├── user.py
│ ├── event.py
│ ├── speaker.py
│ └── registration.py
├── schemas/
│ ├── user.py
│ ├── event.py
│ ├── speaker.py
│ └── registration.py
└── services/
├── user_service.py
├── event_service.py
├── speaker_service.py
└── registration_service.py
- Database integration with SQLAlchemy
- Authentication & permissions
- Admin dashboard frontend
- Pagination & search filters
This project is open-source and free to use under the MIT License.