Project
EkoZapis
A public register of environmental problems in Croatia — report pollution with photo evidence, follow publicly what happened to the report, and see resolved cases on a map.
Client / Industry
Environmental protection and public services — own product, V1 delivered.
Platform
Public register with a map, a report form with attachments and a moderation interface — REST API and web application.
Role
Product ownership + full-stack development (domain model, API, interface, deployment).
Problem
A report about an illegal dump or a discharge into a watercourse ends up in an email or a phone call and disappears there — the person reporting never learns whether anything was done, and the public has no view of how many cases are open or how many were resolved. At the same time a photograph used as evidence is sensitive: it carries EXIF data with the exact location and device, and the reporter often does not want to be named. What was needed was a register that is public without exposing the reporter or data they never meant to share.
Solution
EkoZapis carries a case from report to outcome and keeps that whole path visible. Reporting works anonymously or with an account, every status change requires a written justification, and anything published goes through processing that strips what does not need to be public.
- Reporting with evidence — anonymously or with an account. An anonymous reporter receives an access code to follow and amend their case later, without creating an account.
- Attachment processing — originals stay private and are retrieved only through a signed, time-limited link, while what is shown publicly are derivatives with EXIF data removed.
- Public register and map — filtering by category, status and area, marker clustering, and a separate view of resolved cases.
- Moderation with a trail — a mandatory justification on every decision, a case timeline and an audit log; the reporter is notified of changes by email.
Technology
PHP 8.4, Symfony 8.1, API Platform 4.2, Doctrine ORM 3, MySQL 8.4, React 19 + TypeScript, Vite, Leaflet, Docker.
Results
300
automated tests passing, static analysis clean, 72.8% line coverage.
V1
MVP delivered in full — all 18 user stories, from case submission through moderation to the public register.
no EXIF
public photographs carry no location or device metadata; originals are reachable only through a signed, time-limited link.