Inspiration
Residents often notice damaged roads, broken lights, overflowing bins, and other problems before anyone responsible for fixing them does. Reporting an issue can be confusing, and residents rarely have a clear way to follow what happens next. We created Civic. Fredericton. to make that process visible.
What it does
Civic connects residents and city staff through one issue lifecycle:
- Report: Submit a problem with a description, photo, and location.
- Confirm: Other residents who have seen it can confirm the report.
- Track: City staff review the issue and update its public status.
Residents can report anonymously. Optional Google or email-code sign-in lets them track their contributions.
How we built it
- Frontend: Next.js, TypeScript, Tailwind CSS
- Backend: NestJS, PostgreSQL
- Data and maps: Snowflake, OpenStreetMap
- Authentication: Better Auth
- Development and monitoring: Docker, Sentry
Challenges we ran into
Our hackathon time was limited, while the problem covered many types of city issues. We focused on completing one useful flow, from a resident's report to a visible staff update.
We also had to design for two audiences. Residents need a fast reporting experience. Staff need enough information to review an issue and communicate progress. Both experiences had to work with the same report.
Accomplishments that we're proud of
- Built an end-to-end reporting, confirmation, and status workflow.
- Kept reporting available without requiring an account.
- Designed clear desktop and mobile experiences.
- Connected location, issue data, and staff updates in one demo.
What we learned
- Turn an open-ended problem into a testable MVP. We defined a complete issue lifecycle and prioritized the features needed to demonstrate it.
- Integrate Snowflake into an application workflow. We connected it with our NestJS backend to work with issue data.
- Build for reliability under a hard deadline. Docker helped keep services consistent, and Sentry helped us diagnose errors during integration and testing.
What's next for Civic. Fredericton.
- Build a mobile app to make reporting issues and following updates easier on the go.
- Gather feedback from residents and city staff to improve the reporting and review workflows.
- Expand beyond Fredericton to support other cities and provinces.
Built With
- betterauth
- leaflet.js
- nestjs
- next.js-15
- openstreetmap
- postgresql
- radix-ui
- react-19
- tailwind
- typeorm
- typescript
Log in or sign up for Devpost to join the conversation.