‹ ARCHIVE NB-C013 · .case · 2026·06

Municipal occurrence-reporting platform

NB-C013 .case

Web platform for a municipality to register and track occurrences reported by citizens and services, focused on operational coordination and public lookup of each case's status.

I built the application with Next.js 16 (App Router) and React 19 in TypeScript, backed by PostgreSQL through Prisma. A citizen submits an occurrence with photos, GPS location and a contact; images are normalised to WebP with Sharp. An admin panel protected by NextAuth validates each record before it appears on the public map, built with Leaflet and heat layers. Submission is guarded by hCaptcha and by request rate limiting on Redis, degrading gracefully when the service is not configured.

The interface is multilingual (next-intl) and the forms use React Hook Form with Zod validation shared between client and server. The application is installable as a PWA.

  Citizen/Service
        |  submits (photo, GPS)
        v
  +----------------+  validates  +--------+
  |  Intake + API  | ----------> | Admin  |
  +----------------+             +--------+
        |                           |
        |  Prisma                   | publishes
        v                           v
  +-----------+               +-----------+
  | PostgreSQL|               | Public map|
  +-----------+               +-----------+

Deployment is continuous via Coolify from the main branch. The project is archived for portfolio purposes.

BRI assistant

Quer saber sobre um projeto, um serviço ou uma notícia recente? Pergunte. Conheço todo o conteúdo deste site.