Back
2026

Mapa do Mandato

A civic mandate-management platform for Brazilian city councillors that plots every citizen request, visit and action where it actually happened.

Mapa do Mandato preview
The problem

A councillor's office tracks citizen demands across spreadsheets, WhatsApp threads and paper, so nobody can answer which neighbourhood is being underserved — the one question that decides where the mandate spends its time.

The outcome

In production at mapadomandato.com.br, with the office's demands, visits and actions on one map and TSE vote data underneath it for context.

About this project

Mapa do Mandato gives a councillor's office one interactive map of its own work: citizen requests, visits, actions, events and contacts, each pinned to the place it belongs to. The map is the product rather than a feature — built on MapLibre GL with switchable basemaps and layered choropleths, it lets staff create a request by clicking a location and drag a marker to refine it with reverse geocoding. Election results are pulled from the public TSE dataset on BigQuery and assigned to neighbourhoods by point-in-polygon against the city's GeoJSON, producing a votes-per-neighbourhood layer that sits underneath the operational data. The platform is multi-tenant per office, with role-based access across five roles, LGPD consent tracking per contact channel, a public citizen portal for submitting and following requests, PDF export, and an audit trail. Built in collaboration with another developer.

Key Features

Interactive map as the primary interface, with pin-to-create requests
TSE election data joined to neighbourhoods via point-in-polygon on BigQuery
Role-based access control across five distinct office roles
LGPD consent tracked per contact channel
Public citizen portal for submitting and tracking requests
Map-aware end-to-end tests with Playwright and MapGrab

Tech Stack

Next.jsTypeScriptMapLibre GLSupabasePostgreSQLTanStack QueryTailwind CSSBigQueryPythonPlaywright
Mapa do Mandato