Back to All Projects
Problem Statement
Students and organizers need a simple way to list upcoming events and collect registrations without a heavy authentication setup. Managing sign-ups through forms or messages makes it easy to lose track of who registered and to accept the same person twice.
Proposed Solution
A lightweight Flask application renders events and processes registrations, with SQLite storing event and participant data. Jinja2 templates and Bootstrap provide a consistent interface, while server-side validation and flash messages keep the registration flow clear.
Key Features
- Dashboard showing the number of available events.
- Event listing sorted by date.
- Event detail page with description, date, venue, and registration form.
- Duplicate registration prevention by email for each event.
- Registered participants list for every event.
- Registration cancellation with a confirmation prompt.
System Architecture Flow
Browser (Jinja2 templates with Bootstrap) -> Flask routes and validation (app.py) -> SQLite database (database.py) -> Event and registration records
Engineering Challenges
- Duplicate sign-ups were prevented by checking for an existing registration with the same event and email before inserting a new record.
- Bad input was handled by validating email values in the registration route and showing clear feedback with flash messages.
- UI consistency across pages was kept through a shared base template and custom CSS, which also removed repeated markup.
Lessons Learned
- Building a complete small web app with Flask and SQLite, from routes to database schema.
- Structuring reusable Jinja templates and Bootstrap layouts.
- Handling form validation and user feedback with flash messages and confirmation flows.
Results
Completed as one of my backend development and self learning.