Signals arrive messy.
Citizen reports, distress messages, weather feeds, traffic incidents, and advisories arrive with different trust and freshness.
Kampung Kaki is a live, role-aware map of Singapore for citizens, responders, and operations teams. A citizen can send an SOS, ops can verify and dispatch, and responders can coordinate around the same incident without the usual screenshots, phone chains, or stale dashboards.
Residents see one thing, responders receive another, and operators spend valuable time reconciling both. Kampung Kaki treats coordination as a shared-state problem: every role gets the tools it needs, but all of them read and write the same incident lifecycle.
Citizen reports, distress messages, weather feeds, traffic incidents, and advisories arrive with different trust and freshness.
A citizen needs a clear SOS path. A responder needs a mission and aid card. Ops needs verification, dispatch, zones, and broadcasts.
Emergency software cannot pretend a dropped connection means the action never happened. Retained state and offline queues are core behavior.
The three clients are not separate products. They are role-scoped surfaces in the same React bundle, which keeps the data model, map behavior, and event semantics consistent.
Live conditions, nearby care resources, report composition, SOS, alerts, and grounded AI guidance sit on one familiar map.
Duty state, joinable missions, case rooms, aid cards, capability groups, and queued status updates support work in the field.
Ops can inspect intake, promote verified events, dispatch responders, draw emergency zones, and publish role-aware broadcasts.
The product keeps low-trust intake separate from verified incidents, then creates operational work only after the evidence is good enough. That distinction is what stops a crowded map from becoming a noisy one.
A resident files a report or starts an SOS session. Live feeds can also emit threshold events.
Ops reviews evidence, provenance, location, source health, and possible duplicates.
A verified event creates case work, responder assignments, zones, and broadcasts.
Status, chat, acknowledgements, and the audit log remain attached to one canonical incident.
The Canonical State Of Truth sits between clients, edge functions, workers, and external providers. Mosquitto MQTT 5 handles retained real-time delivery; Redis keeps the durable mirror and gives background workers a fast read and write path.
The CSOT is organized by lifecycle rather than by screen. Each cluster has a primary responsibility, which makes role permissions and cross-role transitions easier to reason about.
01 / intakeReports and SOS sessions remain low trust until ops verifies them.
02 / incidentsVerified events and declared zones become the publishable source of truth.
03 / operationsCases, members, responder state, chat, captains, and live response work.
04 / networkIdentity, responders, groups, rosters, and organization affiliation.
05 / intelSource health, action logs, notifications, and situational context.
06 / presentationEphemeral role, drawer, selection, and shell state shared across tabs.
External providers are allowed to be unavailable. The interface reports stale or missing data explicitly, while state-bearing actions use retained delivery and local queues to survive reconnects.
QoS-1 delivery, retained state, access control, and last-will presence let late or reconnecting clients recover the current picture.
AI routing, tool calls, map layers, reverse geocoding, and source snapshots translate requests without becoming another state store.
Provider outputs carry source attribution and freshness. If a tool cannot answer, the host refuses instead of filling the gap with a guess.
Public feeds are not decorative layers. They help locate care, understand access constraints, and explain the environment around an incident. Every feed remains read-only and attributed.
The recording follows the citizen, responder, and ops clients through a live emergency scenario: grounded assistance, SOS propagation, dispatch, offline behavior, case coordination, and final resolution.
Welcome.