Back to home
Hello Tag

Hello Tag

Secure Your Vehicle, Stay Connected

Live
Try it live
100+ Active Users
Live Status
0 Phone Numbers Shared

Overview

Someone's blocking your car, their windows are up, and you have no way to reach them. The usual options (leaving your phone number on the dashboard, asking security to make an announcement) either compromise your privacy or just don't work. Hello Tag gives every vehicle owner a unique QR code. A stranger scans it, types a message or sends an urgent alert, and the owner gets a push notification instantly. No app download needed for the sender, no account creation, no phone numbers exchanged. A real-time chat opens so both sides can sort things out. We have 100+ users right now and expect to expand in the coming weeks. Owners manage their vehicles and conversations through a React Native app built with Expo. They can register multiple vehicles, set notification preferences per vehicle, and see their full message history. The system handles everything from "hey, your trunk is open" to "your car is being towed" with the right level of urgency.

Key Features

Tech Stack

React Native + Expo

Cross-platform mobile framework for iOS and Android from a single TypeScript codebase. Expo handles builds, OTA updates, and push notifications

Supabase

Backend platform handling the real-time database, auth, and push notification relay. Realtime subscriptions power the chat, and Row Level Security enforces privacy at the data layer

TypeScript

Type safety across the full stack, from the mobile app to database queries. Catches schema mismatches and API issues at compile time

QR Code Generation

Client-side library generating high-error-correction QR codes that stay scannable when printed small, partially covered, or photographed through glass

Architecture

The system is a scan-to-chat pipeline built for minimal friction. Someone scans a vehicle's QR code, their phone opens a lightweight web page (no app install), and it resolves the vehicle identifier against Supabase. The web client opens a Supabase Realtime subscription on that vehicle's conversation channel, and the sender types their message through a simple mobile-optimized form. On submission, the message hits the Supabase database, which kicks off two things in parallel: the Realtime subscription pushes it to any active listeners (including the owner if the app is open), and a Supabase Edge Function fires a push notification via Expo's push service to the owner's device. The owner taps the notification, lands in the conversation thread, and can respond right away. Privacy is enforced at every layer. The QR code contains only an opaque vehicle identifier, no personal data. Row Level Security in Supabase means participants can only read their own threads. The stranger's session is ephemeral and cookie-based (no account needed), and the vehicle owner's identity stays behind Supabase Auth with no public-facing profile.

Challenges & Solutions

Keeping Both Parties Anonymous

The whole point is that nobody shares personal info, but both sides still need a real conversation. QR codes encode opaque identifiers, Row Level Security restricts access to participants only, and the stranger's web session uses ephemeral tokens instead of accounts. The tricky part was balancing anonymity with abuse prevention. We needed enough session identity to rate-limit spam and flag bad messages, but not enough to de-anonymize senders. We landed on lightweight fingerprinting plus server-side rate limiting per vehicle identifier.

Real-Time Message Delivery

If someone's car is being towed, the message needs to arrive in seconds, not minutes. Supabase Realtime handles in-app delivery well, but push notifications are less predictable. Expo's push service batches notifications, iOS and Android handle background processing differently, and the OS never truly guarantees delivery. We went with a multi-layered approach: Supabase Realtime for instant in-app updates, Expo push notifications with high-priority flags for urgent alerts, and a polling fallback that checks for unread messages when the app is foregrounded. Urgent alerts get a distinct notification channel on Android with do-not-disturb override permissions.

QR Code Scanning Across Devices

QR codes on vehicles deal with tough conditions: scanning through glass, direct sunlight, bad angles, and cameras of varying quality. Early testing showed that codes printed too small or with low error correction failed on older Android devices, and some color combos were unreadable in bright light. We went with high error-correction codes, a minimum physical size, strong contrast ratios, and a quiet zone that accounts for dashboard reflections. The landing URL is kept short to reduce code density, and owners get a printable template with placement guidance (windshield interior, lower driver-side corner) optimized for the typical scanning angle.