FIELDRELAYRun demo

Independent technical prototype01 — 06

One shipment.Every handoff.Nothing disappears.

Created offline. Passed across teams.
Exceptions resolved. Integrations recovered.
The full story is always here.

Capture
Offline-first
Evidence
Append-only
Delivery
Idempotent

Shipment lifecycle

FR-2026-0842
Trace complete
  1. 01
    Created offline

    09:12 · EV / 0347

  2. 02
    Offered8,200 L

    Generator record

  3. 03
    Picked up8,180 L

    −20 L / −0.24%

  4. 04
    Received7,940 L

    −240 L / −2.93%

    Discrepancy open
  5. 05
    Resolved

    Accepted final · 7,940 L

  6. 06
    Delivered200 OK

    Replay · attempt 04

Correlationcorr_fr0842_b17e
Tanker truck travelling past a refinery at dusk

One record, four operating conditions

01 /

Field

Capture the first record without a signal.

02 /

Handoff

Carry identity and evidence across teams.

03 /

Exception

Keep every report; resolve the difference.

04 /

Recovery

Replay with one stable destination key.

Failure-first engineering / operating register

Designed around what happens
when the happy path breaks.

F-01

Connectivity disappears

Persist the operation, explain what happens next, and synchronize after restart.

SAVED_ON_DEVICE → WAITING
F-02

The response is lost

Check with the same idempotency key and return the original server result.

01 MUTATION / 02 ATTEMPTS
F-03

Quantities disagree

Accept every reported event, preserve the evidence, and open a reviewable exception.

−240 L / −2.93%
F-04

The destination fails

Expose attempts, backoff, dead-letter state, and safe manual replay.

503 → DLQ → 200 OK
F-05

Support reconstructs it

Link device, API, database, queue, and destination events by one correlation ID.

corr_fr0842_b17e

01 / Field

Field work that remains trustworthy offline.

The Android client makes local safety visible. Every pending action has a human description, a saved time, and a clear next step; technical identifiers stay available without becoming the interface.

Get the Android APK →
FIELDRELAY09:14

Maya Chen / Generator

Offline

2

Needs your action

FR-2026-0842Demo Solvent Mixture
OfferedSaved on device
FR-2026-0837Separator Sludge
DraftWaiting
HomeCreateShipmentsSync · 2

03 / Exception

Exceptions become workflows,
not phone calls.

Open workbench ↗
EX / 0037Immutable quantity evidenceDiscrepancy open
  1. 01

    Generator offerMaya Chen · 09:12 · EV-0347

    8,200 L
  2. 02

    Driver pickupMarcus Lee · 10:03

    8,180 L
  3. 03

    ReceiverPriya Shah · 14:08

    7,940 L−240 / −2.93%
Threshold exceededDifference exceeds both 100 L and 1%.Original reports remain unchanged.

04 / Recovery

External delivery you can observe and recover.

Completion creates a transactional outbox record. Delivery attempts remain inspectable through backoff, dead-lettering, and manual replay with one stable destination idempotency key.

Inspect DL / 019 →
  1. Attempt 1503
  2. Attempt 2503
  3. Attempt 3503
  4. Moved to DLQReview
  5. Manual replay04
  6. Attempt 4200 OK

One domain model / every boundary

Mobile, web, database, and delivery speak in events.

  1. 01AndroidOffline operations
  2. 02Node APIRules + idempotency
  3. 03PostgreSQLAudit + outbox
  4. 04DeliveryRetry + DLQ
Read the architecture →
React
React Native
TypeScript
Node.js
PostgreSQL
AWS queues

Built for one real Calgary software role

Product ownership,
not just UI implementation.

I built FieldRelay after studying public industrial field workflows and the reliability risks around low-connectivity, multi-party records. It combines my React and Node.js work with offline synchronization, production troubleshooting, AWS queue concepts, and enterprise API integration.

Technical decisionsView source ↗

FR / GUIDED / 90 SEC

See the complete failure-and-recovery flow.

Start guided demoExplore operations →