Inspiration

Family caregiving often depends on scattered messages, phone calls, and memory. When several relatives share responsibility, it is easy to miss a task, repeat an update, or lose important context during a handover.

I built CareRelay – Nối Chăm to give families one calm, private place to coordinate everyday care. The goal is not to diagnose medical conditions, but to help family members stay aligned around tasks, responsibilities, and handovers.

What it does

CareRelay helps a family create a shared care circle for one care recipient.

Members can:

  • Organize daily care tasks with times, assignees, and completion status
  • See shared progress for the day
  • Create structured text handovers
  • Record and play private voice handovers
  • Follow recent updates in a shared care log
  • Receive real-time updates across multiple devices
  • Invite family members with clear Owner, Caregiver, and Viewer roles
  • Keep data separated between different care circles

Role permissions are enforced in both the interface and backend. Owners manage the care circle, caregivers update care activities, and viewers can follow progress without modifying records.

RevenueCat integration

CareRelay uses RevenueCat to provide a simple optional subscription called CareRelay Plus.

The free plan supports voice handovers of up to 30 seconds. CareRelay Plus increases the limit to 120 seconds.

The app uses:

  • RevenueCat Offerings and Packages
  • A monthly subscription product
  • The care_relay_plus entitlement
  • RevenueCat CustomerInfo as the subscription source of truth
  • Supabase Auth user IDs as RevenueCat App User IDs
  • Restore purchases
  • Account-level entitlement isolation
  • Safe handling for purchase cancellation, failure, restart, and temporary network errors

The subscription only changes the recording duration. It never overrides care-circle roles or backend authorization.

How I built it

CareRelay is a mobile application built with:

  • React Native
  • Expo and Expo Router
  • TypeScript
  • Supabase Authentication
  • PostgreSQL
  • Supabase Realtime
  • Supabase Storage
  • Row Level Security
  • RevenueCat
  • Android development builds

Supabase stores users, care circles, memberships, invitations, tasks, handovers, and activity history. Realtime events notify the application when data changes, while the app reloads canonical data from the backend to avoid stale or duplicated state.

Voice recordings are stored in a private Supabase Storage bucket. Access is limited to authorized members of the correct care circle.

Challenges

One of the biggest challenges was keeping data and subscriptions isolated when users signed out, changed accounts, or switched care circles. Realtime listeners, cached state, and RevenueCat CustomerInfo all needed to be cleaned up and reconnected in the correct order.

Another challenge was protecting private voice recordings. A Storage URL alone must not give someone access, so the application uses private storage, short-lived authorized access, and backend policies tied to care-circle membership.

I also had to make purchase states reliable across cancellation, failed purchases, application restarts, account switching, and temporary connection failures.

Accomplishments that I am proud of

  • Built a complete multi-user care coordination workflow
  • Implemented Owner, Caregiver, and Viewer authorization
  • Added real-time synchronization between independent clients
  • Protected private voice recordings with backend access policies
  • Prevented duplicate tasks, handovers, and activity events
  • Integrated a working RevenueCat subscription flow
  • Preserved subscription isolation when switching accounts
  • Tested the main Android flow end to end on a Pixel 8 emulator
  • Created a calm and accessible interface in Vietnamese and English

What I learned

This project taught me that a reliable mobile product is more than a collection of screens. Authentication, authorization, subscriptions, storage, real-time updates, offline behavior, and account cleanup must all work together.

I also learned to treat backend policies as the real security boundary instead of relying only on hidden buttons in the user interface.

RevenueCat helped me understand how to design subscription access around entitlements and verified CustomerInfo rather than local purchase assumptions.

What is next for CareRelay

The current version focuses on the core family coordination experience.

Future improvements may include:

  • More flexible recurring care schedules
  • Improved accessibility and localization
  • Notification preferences
  • Additional care-log filters
  • Better support for larger care circles
  • Native iOS purchase validation
  • Production store deployment

CareRelay’s long-term goal is simple: help families share care responsibilities with less confusion and better continuity.

Built With

Share this project:

Updates

Submission history