The Legacy Blindspot
Before Traffic FFK, this Norwegian municipal authority relied on delayed manual channels like radio or text to report hazards (accidents, ice, roadblocks). In a public transport system where seconds matter, this lag created critical safety risks.
Communication was fragmented. Drivers were isolated. Central command lacked structured data on road conditions, leading to reactive rather than proactive decisions.
> [RADIO_LOG_14:02] Bus 44: "Ice patch on Route E6... over."
> [RADIO_LOG_14:05] Central: "Repeat location? Signal weak."
> [SYSTEM] ERROR: NO_DATA_PACKET. Manual entry required.
> [ALERT] Incident acknowledgment delay: +12 mins
_ CRITICAL: HAZARD UNVERIFIED
The Real-Time Mesh
Offline Resilience
Local caching on driver devices ensures data integrity even in tunnels or dead zones. Syncs automatically upon reconnection.
Context-Aware
Alerts are geo-fenced. Drivers only receive warnings for hazards *relevant* to their current route to reduce noise.
Multi-Source Data
Integrates manual reports, bus-mounted camera feeds, and public weather APIs into a single source of truth.
Safety-First UX
Driver distraction is a critical risk. We designed the tablet interface with a philosophy of "One Glance, One Tap."
- High Contrast Mode: Readable in direct sunlight or tunnel darkness.
- One-Tap Reporting: Large touch targets. Location is auto-tagged via GPS sensors.
- Visual Confirmation: Large icons replace text to reduce cognitive load.
class HazardQueue {
constructor() {
this.queue = new Storage('offline_reports');
this.isConnected = false;
}
// Auto-sync when network is restored
async onNetworkRestored() {
const pending = await this.queue.getAll();
if (pending.length > 0) {
console.log(`Syncing ${pending.length} cached hazards...`);
for (const report of pending) {
await api.submitHazard(report); // Retry with backoff
await this.queue.remove(report.id);
}
}
}
}Structured data on road and weather conditions now feeds directly into municipal strategic planning.