Inspiration
When I think of pollution, most people think of exhaust fumes or littering. But there's another type of pollution that often goes ignored, noise pollution.
Noise pollution isn't just a comfort problem. It can cause permanent hearing loss, chronic stress and anxiety, sleep disruption, and even harm wildlife. And it hits hardest in cities, where residents deal with construction, traffic, and loud music every single day.
The frustrating part? Reporting it goes nowhere. You call 311, leave a message, and nothing changes. There's no way to know if your whole street is affected. No way to know if the city is even aware.
That's what inspired CityLog.
What it does
CityLog is a real-time noise complaint reporter that lets anyone in any city:
- File a complaint in seconds directly from their terminal
- See every complaint near them on a live interactive map
- Track noise hotspots with colour coded pins by noise type
- Access shared data, every complaint is visible to all users in real time
Complaints automatically expire after 24 hours, keeping the map current and relevant.
How we built it
CityLog is built entirely in Python by me (Krish!) using the following tools:
gspread+ Google Sheets API, shared real-time database accessible by all usersfolium, interactive browser-based map with colour coded complaint pinsgeopy, address validation and geocodingdatetime, automatic timestamping of every complaint
The program runs in the terminal and opens the complaint map directly in the user's browser.
Challenges we ran into
Address validation: early versions let users submit any text as an address, which broke the map. We added geocoding validation before saving so only real addresses get logged.
Map centering: the map initially always centered on Toronto regardless of where complaints were filed. We fixed this by collecting all valid locations first, then centering the map dynamically on the first recent complaint.
Google Sheets API setup: configuring service account credentials and enabling the correct APIs was tricky as a beginner, but taught me a lot about how real applications connect to external services.
Duplicate country/city names: cities like London share the same name in multiple countries, so we added a country field to make sure complaints are always pinned to the right location.
Accomplishments that we're proud of
- Educating other people on how harmful noise pollution is
- Built a fully functional app that saves and reads real data shared across all users
- Implemented live address validation so the map is always accurate
- Created a colour coded interactive map that updates in real time
- Designed a clean terminal experience with input validation at every step
- Built something that helps solves a real problem that real people face every day
What we learned
- How to connect a Python program to a live database using the Google Sheets API
- How to convert street addresses into map coordinates using geocoding
- How to build and display an interactive map in the browser using folium
- How to validate user input before saving it to a database
- How real-world applications handle shared data across multiple users
- How harmful noise pollution can be
What's next for Citylog - Real Time Noise Complaint Logger
- Integration with a city's existing 311 system
- Push notifications when a noise hotspot forms near you
- A web-based interface so no installation is needed
- Analytics dashboard for bylaw officers to track complaint trends over time
- Heatmap view showing the loudest areas of the city at a glance
Log in or sign up for Devpost to join the conversation.