Skip to content
All projects
Full-stack solutions

A blood donation network that finds the nearest donor in seconds

A PWA that replaces the frantic phone-tree search for a blood donor with a ranked, distance-aware match — and live donor tracking the requester can actually follow.

The Arxiron sign-up screen, a dark interface with the red Arxiron blood donation branding
Client
Arxiron
Industry
Healthcare
Service
Full-stack solutions
Year
2026

The challenge

When somebody needs blood urgently, the search is a relative ringing everyone they know and messages forwarded through group chats until they reach someone who might help. It works, eventually. Eventually is the problem. The replacement had to reach compatible donors in seconds, respect medical eligibility rules, and never expose a donor's location beyond the person they chose to help.

What we did

  1. Split the system into two services that never call each other — identity owns accounts and sessions, platform owns donors, requests and matching — joined only by a shared JWT secret and a one-way Redis event stream
  2. Built matching on blood compatibility rather than type equality, filtered by availability, the 56-day donation cooldown, the search radius and each donor's own maximum travel distance, ranked nearest-first then most reliable
  3. Escalated unanswered requests automatically: a Celery beat job doubles the radius through 10, 20 and 40 km, capped at 50, notifying the donors earlier waves missed
  4. Kept access tokens out of the browser entirely — a BFF proxy attaches them from an httpOnly cookie, so a script injection has nothing to steal
  5. Shipped live donor location that is visible only to the requester, only while the donation is open, and never automatically
  6. Covered the two failure modes unit tests structurally cannot reach — a token crossing services, and an event crossing Redis — with 31 smoke checks against running containers

Outcome

  • Phone tree to seconds

    Time to reach donors

  • Compatibility, distance and eligibility aware

    Matching

  • Requester-only, donation-scoped

    Location privacy

  • Next.js 15
  • React 19
  • TypeScript
  • Tailwind v4
  • Serwist PWA
  • Leaflet
  • FastAPI
  • Python 3.12
  • PostGIS
  • Redis
  • Celery
  • Web Push
Next step

Tell us what you are trying to ship

Send a short brief or a messy idea — either works. You will hear back from an engineer, not a form, within one business day.