03 — Civic tech

Civic Sense

Citizens report what's broken. Authorities track it until it's fixed.

Visit the live site (opens in a new tab)
Screenshot of the Civic Sense homepage: the headline “Redefining Urban Civic Responsibility” over a sky background, View on GitHub and Explore App buttons, and a phone showing the issue-reporting map.
Live site — homepage
Category
Civic issue reporting platform
Scope
Mobile app, web dashboard, admin panel, REST API
Mobile
React Native 0.81, Expo SDK 54
Web & API
React 19, Vite 7, Express, MongoDB, Redis, Socket.io

The challenge

Reports shouldn't disappear.

The people who spot a broken streetlight or a pothole are rarely the people who can fix it — and the path between them is easy to lose.

Civic Sense connects citizens and local authorities around one shared record: a photo, a location and a status everyone can follow.

The approach

Report. Map. Resolve.

  1. 01

    Report in seconds

    Citizens photograph an issue and submit it with its GPS location, straight from the mobile app.

  2. 02

    See the whole city

    An interactive map with category filters, plus analytics for city- and state-level statistics, resolution rates and hotspots.

  3. 03

    Close the loop

    Real-time notifications when a status changes, role-based access, and PDF/CSV exports for governance and audits.

Interactive

Explore the architecture.

Select any part of the system, or use the arrow keys.

Mobile app

Citizens report issues with a photo and GPS location, track their status and browse the community feed.

React Native 0.81 · Expo SDK 54 · Expo Router · Redux Toolkit · expo-camera · expo-location

Web dashboard

Admins manage issues, view analytics and export reports.

React 19 · Vite 7

Admin panel

A React admin interface on the same API. Access is role-based: User, Admin and SuperAdmin each have their own permissions.

React

REST API

One API serves all three apps — data, real-time updates, caching and PDF/CSV exports — secured with Helmet headers and bcrypt password hashing.

Express.js · Node · Helmet · bcryptjs · PDFKit · json2csv

MongoDB

The main database, modelled with Mongoose.

MongoDB · Mongoose

Redis

Caching and rate limiting for the API.

Redis · ioredis

Socket.io

Real-time, two-way updates, so citizens hear about status changes the moment they happen.

Socket.io · Socket.io client

The work

The city, at a glance.

Illustrated layout of the Civic Sense web dashboard: statistic tiles, issue hotspots on a city map, a resolution chart by category and a list of issues with status labels.
Web dashboard — statistics, hotspots, resolution by category · illustrative

The outcome

One API, three apps.

Citizens and authorities work from the same live record — updated in real time.

  • Mobile app for reporting and tracking issues
  • Web dashboard with analytics and PDF/CSV export
  • Role-based access for User, Admin and SuperAdmin
  • Express API with MongoDB, Redis caching and rate limiting, and Socket.io

Building something like this?

Start a project