Public sector

CivicFlow: resident reports for councils

A resident reports a pothole or broken streetlight in a form and gets a case number; staff run the whole queue in one panel.

Type
Our own project
Who it is for
Councils: staff and local wardens
Built
2026
Similar project
Application or system: from 15,000 PLN. Studio pricing and contact
CivicFlow: the report form, a preview of the case card and a status bar with the case count per status (30 registered, 16 resolved)
The report page: the form, a preview of the case card and a status bar with a count for each status.

At a glance

A resident fills in the form, and staff move the report through its statuses until it is resolved.

Challenge

Resident reports get lost in inboxes and phone calls

No one sees right away what is urgent, what is already being handled, or how many similar reports came in.

How it works

From a resident's form to a staff dashboard

  1. Submission

    Category, priority, place and description, then the resident's details.

  2. Save

    The server checks the report and gives it a file number such as CF-0031.

  3. Staff dashboard

    A status bar, search, filters and a board where cards are dragged.

At rollout we set categories and permissions with the office.

Numbers

The structure of a report in numbers

6
report categories and 3 priorities, chosen by the resident
4
statuses, changed by staff, every change goes into the history
2 h
is how long a demo register lives, then it is gone

The register in the demo is your own private copy in a signed cookie, so one person's data never shows up on another person's screen.

For engineers: the technology stack
LayerChoiceWhat it does
FrontendNext.jsThe dashboard opens with the list already there.
Demo dataSigned HMAC cookieThe register you click is your own copy and expires on its own.
ValidationZodThe same rules check the form on your side and on the server.
SecurityCSRF (double-submit cookie)Another site cannot file a report in your name.
Admin sessionHMAC SHA-256Only a valid session opens the staff dashboard.

Security headers (HSTS, X-Content-Type-Options, Referrer-Policy, a per-request CSP nonce) are set at the response level. The demo has no database: the register travels in the visitor's own signed cookie.

Details

The full description of the demo

The problem in the office

A fault reaches the local office by email or phone. No one sees right away what is urgent, what is already being handled, or how many similar reports came in. So we built a portal: the resident picks a category and priority, and staff change status without digging through email.

Who it is for and what the demo contains

CivicFlow is for places where a report must reach the right person with a priority attached, not a shared inbox. The demo has fixed categories and one admin account. At rollout we set categories, departments and permissions with the specific office.

Submission

The form asks about the issue first (one of 6 categories, priority, place, description) and about the resident last. A carbon copy of the report fills in beside it. The browser and the server both check the data, and a report sent from another site is rejected.

Save

The server checks the report came from this site, enforces a rate limit, validates the content and only then adds it to the register. The resident gets a file number such as CF-0031 and uses it with the email to look up the status and the case history.

Staff dashboard

In the Admin panel tab, a status bar (Pending, In progress, Resolved, Rejected) shows how many cases are in each. The / key opens search, and Filters narrow the register by category and priority. Staff change a status in the row or in the side panel of the case. The Board view lets you drag cards between columns.

Numbers: the full description

6 report categories and 3 priorities, chosen by the resident in the form. 4 report statuses are changed by staff in the panel. Every change goes into the case history. 2 h is how long a demo register lives, counted from your first visit or your last change, whichever is later: then the cookie expires and there is nothing left to delete.

Data in the demo

One person's data never shows up on another person's screen. The register you click is your own private copy in a signed cookie, so you can try everything without an account.

Contact

Describe the problem, we come back with a price

  • We reply within 48 hours of your message; a deadline on a weekend or public holiday moves to the next working day.
  • Free intro audit, fixed price, no surcharge if the work takes longer than quoted.

Or write: contact@tenzanlogic.com

Three fields are required: name, email and a description of the problem.

Three questions that make the quote accurate. Optional.
What the problem is about
What you have today
Horizon

The form data is used only to answer your enquiry. Details in the privacy notice.