Back to blog
FILE 0x21·CHECK ON MINE

Check on Mine

A cross-platform safety and wellness monitoring platform for families and the people who care for them. Built solo, end-to-end.

checkonmine.com →

What it is

Check on Mine is the safety net I wanted for the older people in my life and never found in the App Store. It lives on the user's phone (native iOS and native Android) with a macOS menu-bar companion for caregivers and family who want a glanceable view from their desk. It runs scheduled wellness check-ins, watches for falls and anomalies, lets the user fire an SOS, tracks medication adherence, monitors trips in real time, sends severe-weather alerts, and escalates through a tiered response chain if a user doesn't respond when something looks wrong.

It is built for elderly users first, and for everyone who loves them second. Every UI decision is filtered through “would my grandmother understand this without help.”

Feature surface

10-second SOS

One tap. Ten seconds to cancel. Otherwise it calls every contact in the response chain, with location, in priority order, until someone picks up.

Trip mode

Live location streaming to family during a drive, walk, or commute. Auto-stops on arrival. Includes a beat-the-ETA timer that escalates if it expires.

Medication adherence

Per-medication schedule with snooze, taken-late, and missed states. Family sees a glanceable timeline. Optional escalation if a critical dose is missed.

Wellness check-ins

Configurable schedule asks the user "how are you feeling?" with tiered escalation if they don't respond — ping, text, call, contact next-in-chain.

Geofenced safe zones

Define home, family, doctor, friend's house, church — the system notices when something is out of pattern. Quiet by default; loud when it matters.

Severe weather alerts

NWS feed monitored per user's location. Wind, tornado, flood, hurricane warnings push immediately with the protective action.

Activity anomaly detection

The app learns the user's normal motion profile. A sustained deviation — long stillness during what should be active hours, for example — raises a discreet flag for the family.

macOS companion

Menu-bar app for the family member or caregiver who keeps a Mac at their desk. Status at a glance; one click for the full view.

Architecture

Clients

Native iOS in SwiftUI. Native Android in Kotlin with Jetpack Compose. macOS companion as a SwiftUI menu-bar app sharing the same data layer as the iOS app. All three talk to the same serverless backend with the same in-house JWT auth.

SwiftUI · Jetpack Compose · CoreLocation · FusedLocationProvider · APNs · FCM · CallKit

Backend

Serverless PHP on AWS Lambda via Bref. Multi-tenant DynamoDB schema (per-user partition keys with overloaded sort keys for activities, contacts, check-ins, medications, geofences, weather subscriptions). API Gateway in front; SES for transactional mail; SNS / End User Messaging for SMS; APNs and FCM for push.

PHP (Bref on Lambda) · DynamoDB (multi-tenant single-table) · API Gateway · SES · SNS · End User Messaging · APNs · FCM

Auth

In-house JWT, migrated from AWS Cognito after the original Cognito design ran into per-user-pool limits and a UX I couldn't tune. The replacement is a simple signed-token issuer + refresh-rotating client, with revocation lists living in DynamoDB. Smaller, faster, and easier to debug.

Escalation engine

The heart of the system. Every event (missed check-in, missed medication, anomaly flag, SOS, weather alert, ETA expiration) flows through the same escalation pipeline. It owns the contact chain, the timing, the channel selection (push first, then SMS, then voice), and the “quiet hours” rules. One place to reason about “when do we wake somebody up.”

Severe-weather subsystem

Per-user location subscriptions check the NWS forecast on a regular schedule. When an active warning lands inside a user's polygon, the system pushes immediately with the protective action and tells the family. The same engine drives weather-aware adjustments to other subsystems — we don't fire a "you didn't check in this morning" escalation if the user is in a tornado-warning area, because that's noise on top of an emergency.

Selected design decisions

Where it goes next

Stack summary

SwiftUI · Kotlin / Jetpack Compose · PHP (Bref on Lambda) · DynamoDB · API Gateway · APNs · FCM · SES · SNS · End User Messaging · AWS Route 53 · ACM · in-house JWT

← Cass · checkonmine.com →