// The problem

MyJourney connects travellers with transfer drivers across Europe. The critical moment is the ride offer — if the driver doesn't get it in time, the ride falls through. But push notifications sometimes fail: a killed app, a dropped connection, an invalid push token. Relying on a single channel means lost rides and frustrated travellers.

// The solution

We built a durable notification stack with three coordinated channels: a database inbox as the source of truth, FCM push to wake the app, and SignalR for live delivery. Delivery is idempotent with exponential backoff (30 s → 6 h) and a dead-letter queue — no message is lost or sent twice. Plus a Flutter driver app with offline GPS, and a modular .NET monolith where every feature has clear boundaries.

// Results
  • Three delivery channels (DB + push + realtime) — no lost ride offer
  • Idempotent delivery with 30 s → 6 h backoff and dead-letter — survives outages
  • Flutter driver app — offline GPS, single-flight refresh
  • Modular .NET monolith — 8 fully layered modules, clean boundaries
// Key metrics
Delivery channels
After 3× redundancy
Backoff retry
After 30 s → 6 h
// Technologies
.NETFlutterSignalRFirebase FCMSQL ServerStripe
// CTA

Want similar results?

We'll review your project and propose a solution. Free consultation.

Book a call