All projects

Case study12

Ride-Guard Emergency System

Next.js-based emergency platform for motorcyclists and adventurers with NFC chip and QR code integration

HealthcareRide-Guard
Ride-Guard Emergency System, View 1
View 01

Partner

Ride-Guard

Industry

Healthcare

Core technologies

Next.js · Supabase · Stripe

At a glance

Ride-Guard sells weatherproof stickers with an NFC chip and QR code for helmets and fairings. Anyone helping after an accident can scan the sticker and see the medical details and emergency contacts the owner has stored, without logging in. DuoByte built the web platform behind it, from activation and the public emergency profile to the Stripe shop and automated deployment.

Our role: DuoByte built the platform from the database to the deployment pipeline and has kept extending it since, most recently with new product variants and shipping options in the shop.

Project work

From requirements to a resilient solution.

How the project came together: from the context and requirements through implementation to where it stands today.

01

Context

Medical emergency data on the helmet, one scan away

After an accident, injured people often cannot say which medications they take, what they are allergic to or whom to call. Ride-Guard addresses this with a sticker that goes on a helmet or plastic fairing and carries an NFC chip and a QR code. It is aimed at motorcyclists, cyclists, mountaineers and anyone else who spends time outdoors.

The platform serves two very different groups. Owners set up their profile once and keep it current, at their own pace and on their own device. First responders and paramedics open it in an emergency, without an account, without instructions and not necessarily speaking German.

02

Challenge

Showing health data openly while keeping control

The emergency profile has to be reachable without logging in, or it helps no one at the scene. At the same time, it holds health data that only the owner may change. A sticker that has been sold but not yet activated must not reveal anything, and nobody else must be able to claim it.

Then there is the sales side. Stickers are printed in batches before they have an owner and are sold through a dedicated shop with shipping. Prices must not be open to manipulation in the browser, and test and live payments have to stay strictly separate.

Many owners use more than one sticker, for example on two helmets. Their data should still be maintained in one place.

03

Solution

From printed sticker to active emergency profile

Each sticker receives a 16-character ID in blocks of four and a PIN when its print batch is generated. The ID avoids easily confused characters such as 0 and O or 1, I and L, so it can be typed reliably from the print. Scanning a sticker that has not been activated opens the activation page, where the buyer creates an account with the ID, PIN, an email address and a password.

In the protected area, owners maintain their profile: photo, date of birth, height, weight, blood type, medications, allergies, pre-existing conditions, pregnancy, organ donor status, free-text notes and up to five emergency contacts. Additional stickers can be linked to the account, and scanning any of them leads to the main profile. Owners can delete their account themselves, which removes profile data, sticker assignments and photos.

The public profile is designed for the situation at the scene: clearly separated sections, labels in German and English, and emergency contacts shown as phone numbers that can be tapped to call. The stickers are sold through the built-in shop.

  • Product catalog with color and bundle variants
  • Cart that persists in the browser
  • Stripe Checkout with card, Apple Pay, Google Pay, PayPal and Amazon Pay
  • Standard or registered shipping to addresses in Germany
  • Automatic invoice listing product, color, variant and shipping method
  • Contact form delivered via SMTP
04

Implementation

Next.js, Supabase and access rules inside PostgreSQL

The application is built on Next.js 15 with the App Router and TypeScript, styled with Tailwind CSS. Route groups separate public pages, sign-in, the protected area and the shop. Forms use React Hook Form with Zod schemas, and the API routes validate every request again with Zod before passing it on.

Data lives in Supabase on PostgreSQL. Reads and writes go through database functions with explicitly granted execution rights rather than direct table access. The public lookup returns only activated stickers and only the emergency profile fields, the profile update checks the number and structure of emergency contacts, and activation locks the record so no sticker can be assigned twice. Photos are publicly readable, but only the owner can write them.

Anything that needs admin rights, such as creating and deleting accounts, runs in Supabase Edge Functions, so the service key never leaves the server. The checkout session is created there as well: prices come from a versioned server-side catalog, and the browser only sends product IDs and quantities. The function accepts live keys only, while local development accepts test keys only.

The app ships as a Docker image from a multi-stage build. Docker Compose runs the Next.js container alongside Caddy as a reverse proxy, which obtains HTTPS certificates automatically and redirects secondary domains. Every push to the main branch triggers a GitHub Actions deployment over SSH with a read-only deploy key, and the initial server setup is scripted in the repository.

05

Outcome

One system for sales, activation and emergencies

Ride-Guard sells its stickers in its own shop, buyers activate them on their own, and they maintain a single profile for all their stickers. Anyone scanning at an accident scene sees the stored details without an app or an account, and the English labels make them usable without German.

The platform is live and still growing. Recent additions include new color and bundle variants, registered shipping and complete order details in Stripe. Changes, including copy edits by the operator, go live through the same pipeline.

Product & context

Inside the implementation.

Selected views show how the system was conceived and implemented within its domain context.

Ride-Guard Emergency System, View 2
View 02
Ride-Guard Emergency System, View 3
View 03

System architecture

A technical foundation with a clear structure.

Technologies were combined to suit the task, operating model and long-term maintainability.

01

Frontend

Next.jsReactTypeScriptTailwind CSS
02

Backend

SupabasePostgreSQL
03

Payments

Stripe
04

Infrastructure

DockerGitHub ActionsCaddyfile

Keep exploring

Next case study

Combat Sports Event Management Platform

Combat Sports Event Management Platform

Your project

Turn a complex challenge into a clear next step.

Tell us what your system needs to do. We bring structure to requirements, architecture and delivery.

Discuss your project