Inspiration

UCI club events are scattered across Discord servers, Instagram, and email lists. We wanted one place to discover all ICS/CS events and RSVP without hunting through multiple platforms.

## What it does Centralized event discovery platform. Club officers create events via Discord bot, students browse via web interface with search and campus map, RSVP with automatic waitlist management.

## How we built it Backend: FastAPI + PostgreSQL with strict typing, locking to prevent spamming RSVPs, nearly 100% test coverage. Frontend: Static HTML/CSS/JS on GitHub Pages with Leaflet.js map. Bot: discord.py for slash commands (/event_create to create an event, /status to see reservations for an event, and /list to see the list of current events). Deployed on Railway with Docker and PostgreSQL database.

## Challenges we ran into Race conditions during concurrent RSVPs allowed people to spam RSVP reservations which lead to inaccurate counts. We fixed this by requiring user login for RSVP and referencing against an authorization token per user. We maintained strict type safety which required custom protocol interfaces. Proper test coverage and type safety and handling user end bugs required a lot of additional time.

## Accomplishments that we're proud of Nearly 100% test coverage on the codebase, and no type errors. Reliable and robust reservation system. Custom guard scripts preventing common bugs. Clean layered architecture.

## What we learned Database management and handling RSVP spam and user authentication, type safety and proper testing, Docker containerization, static site deployment, API interactions with hosted endpoints, and CI/CD for Github code validation.

## What's next for ICS Connect Attendee grouping, email notifications, UCI official calendar integration, mobile app, analytics for club officers.

Built With

Share this project:

Updates