Inspiration
The streetlight challenge asked for a way to report wasteful daytime lighting without requiring a pole number, then make the report visible and actionable. DayBurn turns a quick sighting into an evidence trail while keeping the cost math inspectable.
What it does
A resident can locate a light with browser location, a map pin, or an address, and the app uses a NOAA-based solar calculation to label daytime or nighttime. Nearby reports can receive a timestamped “still on” confirmation, while the tracker shows status and estimated kWh and dollars. A 311 lighting layer, editable assumptions, bilingual UI, and a print-friendly policy brief support the civic conversation.
How I built it
The app uses Vite and vanilla JavaScript with Leaflet, a shared NOAA solar calculation, an Express and TypeScript API, PostgreSQL and Drizzle ORM, and Google Identity Services for reporting actions. Public browsing stays open; sign-in is reserved for reports, confirmations, photos, and status actions.
Challenges
Solar time, duplicate proximity, and estimates all need careful boundaries. Resident reports are separate from 311 cases, assumptions are shown rather than presented as a utility bill, and the pilot brief remains a proposal rather than evidence of a deployment.
Accomplishments
The working prototype supports a short report flow, duplicate confirmation, public status timeline, source-linked 311 context, transparent energy math, and a 90-day pilot proposal. The release also handles empty states so the dashboard does not invent resident reports.
What I learned
A small amount of transparent math can make a policy conversation concrete, but only if every assumption and source boundary stays visible. “Reported” and “fixed” are different states and should never be collapsed.
What's next
A real pilot would need a utility or city partner, an asset inventory, agreed response targets, and a way to synchronize acknowledgements and fixes. Those partnerships would also determine the appropriate tariff and fixture assumptions.
Explore
Built With
- drizzle-orm
- express.js
- google-identity-services
- leaflet.js
- noaa-solar-equations
- node.js-22
- postgresql
- typescript
- vanilla-javascript-and-es-modules
- vite

Log in or sign up for Devpost to join the conversation.