02 / Civic operation / İzmir
A city report should become accountable work, not disappear into a form.

Operational route / 02
A report leaves the form and becomes accountable work.
What starts with a photo and location remains traceable through municipal review, crew choice, field proof, and the citizen update.

Process / 05 phases
The same report creates new evidence and accountability as it crosses each authority boundary.
Citizen evidence
- Citizen evidence
- Municipal review
- Crew assignment
- Field resolution
- Citizen update
Operational surfaceCitizen evidence
The citizen records the issue with location, photo, and category evidence.
Operational surfaceMunicipal review
A municipal operator verifies the report and sets its scope and priority.
Operational surfaceCrew assignment
The system exposes its recommendation factors; assignment stays with the operator.
Operational surfaceField resolution
The crew resolves the issue in the field and leaves proof of closure.
Operational surfaceCitizen update
The citizen sees the state change and outcome through the same report.
Operating model
Not one form, but four working surfaces with different authority.
Citizen reporting, municipal operations, the transactional domain, and decision support share one lifecycle without inheriting each other’s authority.
Decision evidence
The recommendation is explained. Assignment remains with the operator.

Expertise, availability, workload, distance, and urgency remain visible as separate factors.
Working surfaces
Map, reports, crews, and mobile entry carry one operation.
FixMyCity is not one screen; it reshapes evidence around the people who act on it.

The crew surface exposes capacity, expertise, and open work in one view.

The mobile map keeps city reports readable by location and status.

The mobile report flow puts photo evidence at its first step.
A report is only useful if somebody can own the next step.
FixMyCity began with a full operational loop: a citizen submits a photo and location; a municipality reviews the evidence; a crew is assigned; field work returns an after-photo and note; the citizen sees the status change.
Building the whole loop exposed the hard parts that a single reporting form hides: geographic scope, role boundaries, evidence storage, assignment logic, notifications, audit history, and failure states across multiple clients.
One domain, four distinct surfaces.
The Expo mobile app is optimized for reporting and follow-up. The Next.js administration surface is scoped to the active municipality. A NestJS API owns the transactional domain, while a separate FastAPI service isolates image and language analysis. PostgreSQL/PostGIS, Redis, MinIO, and OSRM support spatial queries, queues, media, and routing.
The separation is intentional. AI output can assist classification, severity estimation, duplicate discovery, privacy checks, and text review without becoming the source of truth for municipal action.
Explain the recommendation before asking for trust.
Crew suggestions show the factors behind the score: category expertise, availability, workload, travel distance, and urgency. Routing can fall back when OSRM is unavailable. The interface keeps these limits visible so the operator can make the assignment rather than accept a black box.
The project is a graduation prototype, not a claim of real municipal adoption. Its value is the depth of the end-to-end system and the decisions made explicit inside it.
Four surfaces
Interfaces change. The transactional domain and evidence chain remain consistent.
- 01Expo
Citizen reporting and follow-up
- 02Next.js
Municipality-scoped operations
- 03NestJS
Transactional domain and roles
- 04FastAPI
Isolated decision support
- PostgreSQL / PostGIS
- Prisma
- Redis
- MinIO
- OSRM
- Docker Compose
- Scope notes
- 25
- Data models
- 15
- API modules
- 07
- Admin E2E specs
Boundary
Where the claim stops
FixMyCity is a solo academic prototype. It has not been deployed by a municipality, and the AI layer is decision support rather than an autonomous authority.