During Loyolaβs Spring Hackathon, I built CTA Transit Tracker, a horribly buggy full-stack web app that provides real-time bus and train predictions across Chicago. It integrates CTAβs APIs, GTFS data, and a custom notification system that texts users when their favorite lines are arriving near their home.
This was a major engineering challenge that included:
- π§ Parsing and visualizing GTFS transit data with
folium
andLeaflet.js
- π§ Creating a notification system with Celery workers that checks for real-time arrivals
- π¨ Sending alerts via SMS-over-email gateways
- π Implementing OTP-based phone authentication
- π Building a dynamic dashboard with Flask and Bootstrap
π§ Technical Highlights:
- Flask backend handles user auth, prediction APIs, and dynamic routing.
- Celery with a separate beat scheduler to push notifications based on custom thresholds.
- GTFS data parsed live from CSVs to render routes and stops.
- Uses SQLite for fast local data storage, with Flask-Migrate + Alembic for schema changes.
- Leaflet.js provides an interactive map of buses and trains using emoji and icon markers.
- Users can set their home location, favorite lines, and receive SMS alerts based on proximity and time-to-arrival.
π§ͺ Notable Features:
- π Draggable home marker to set geolocation preferences
- π Real-time updates from both CTA bus and train trackers
- πΊοΈ Route and stop visualization using
stops.txt
andshapes.txt
- π¬ OTP verification for login without storing passwords
- π Background job sends SMS when a favorite line is about to arrive near home
π§βπ» Team:
- Solo project built in under 48 hours
- Deployed using Gunicorn, Celery, and a
Procfile
for Heroku-style hosting
π Useful Links:
- π» GitHub Repository
- πΉ Demo Video