Technical Architecture

SimpleDial Platform

Assistive telephony for elderly and hearing-impaired users — connecting seniors with the people who care for them

← Back to Platform overview
Platform Overview
SimpleDial is a closed-loop care communication platform. A large-button Android kiosk device runs permanently in the elder’s home, giving them simple one-tap access to family and caregivers. Caregivers manage everything from a companion mobile app — scheduling medication reminders, monitoring the device in real time, placing video calls, and reviewing activity. A cloud backend orchestrates all communication, data persistence, and scheduling across the system.
System Architecture
SimpleDial Kiosk Android · Kotlin · Room 8-contact photo grid Voice dialing (on-device) Kiosk-mode device owner Silent OTA self-updates SimpleDial Server Node.js · Fastify · TypeScript 3 WebSocket endpoints 25+ REST API routes 5 node-cron schedulers Firebase Admin · GPT-4o Coturn HMAC credentials Companion App iOS · Android · Flutter Video calls + push-to-talk Live screen view & control Reminders · Routines Device monitoring SimpleContact Flutter (Phone App) Receive calls from kiosk FCM wake · WebRTC call Firebase FCM Push notifications Offline call routing All 3 platforms PostgreSQL Prisma ORM 27 data models Activity log indexed Coturn TURN WebRTC NAT relay Video · audio · PTT HMAC credentials WebSocket /ws REST API /ws/caregiver /ws/simple-contact Prisma ORM FCM push ICE config
Platform Components
📱

SimpleDial Kiosk

AndroidKotlinWebRTCRoom DB

Always-on home device for the elder. Large-button layout purpose-built for cognitive and vision accessibility.

  • 8 photo contact tiles, one-tap calling
  • Voice dialing via on-device speech recognition
  • Hearing aid & Bluetooth device support
  • Screen flash on incoming call
  • Quiet hours with configurable weekday/weekend windows
  • Adjustable font scale (4 presets)
  • Kiosk lock — device owner, no lock screen, home app pinned
  • Silent OTA self-updates via PackageInstaller
👩‍⚕️

Companion App

iOSAndroidFlutterBLoC

Caregiver control centre. Full management of the kiosk device and care configuration from a mobile app.

  • Video & audio calls to kiosk
  • Push-to-talk (WebRTC audio channel)
  • Live screen view and remote touch control
  • Medication reminder scheduling with history
  • Daily routines & task assignments
  • Device location (GPS map) & battery
  • Activity feed & call history
  • Multi-caregiver access with role-based permissions
👴

SimpleContact

iOSAndroidFlutter

Lightweight phone app for family members who can receive calls directly from the elder’s kiosk device.

  • Receive video/audio calls from kiosk
  • Full-screen incoming call UI, auto wakes screen
  • Pairing via 8-digit code (caregiver issues)
  • FCM-driven wake from background for reliable delivery
⚙️

Backend Platform

Node.jsFastify 5PostgreSQLTypeScript

Central orchestration server. Manages all real-time communication, data persistence, scheduling, and push delivery.

  • 3 authenticated WebSocket endpoints (Kiosk · Caregiver · SimpleContact)
  • 25+ REST API routes with JWT auth
  • 5 node-cron schedulers (reminders · routines · cleanup)
  • Full device sync on reconnect
  • AI pill identification via GPT-4o Vision
  • Device ownership transfer with audit log
  • OTA update hosting and version management
Key Capabilities
📞

One-Tap Calling

PSTN & VoIP with photo contact grid

📹

Video Calls

WebRTC P2P with TURN NAT relay fallback

💊

Medication Reminders

Scheduled push with caregiver acknowledgement

👁️

Screen Monitoring

Live view and remote touch injection

🎙️

Push-to-Talk

Real-time audio via WebRTC audio channel

🔒

Kiosk Security

Device owner, persistent launcher, PIN admin

🗓️

Calendar & Routines

Event reminders and daily task assignments

📍

Device Location

GPS heartbeat with live map in companion

📻

Voice Messages

Caregiver audio notes played on kiosk

🔄

Silent OTA Updates

APK pushed without any user interaction

🤖

AI Pill Identification

GPT-4o Vision for medication photo recognition

📊

Activity Audit

Full caregiver action log with indexed queries

Infrastructure & Integrations
Runtime

Node.js + Fastify 5

High-performance TypeScript server. Event-driven I/O handles thousands of concurrent WebSocket connections without blocking.

Database

PostgreSQL + Prisma

27 data models. Activity log indexed on (deviceId, createdAt) for fast audit queries. Schema managed via Prisma migrations.

Push Notifications

Firebase Cloud Messaging

FCM delivers call notifications and alerts to all three client platforms — ensuring reliable delivery even when apps are backgrounded.

WebRTC Relay

Coturn TURN Server

HMAC-secured per-session credentials. SNI-terminated at port 443 via nginx for reliable traversal of restrictive corporate firewalls.

Reverse Proxy

Caddy + nginx

Caddy handles HTTPS and automatic TLS certificate provisioning. nginx SNI-routes port 443 between Caddy and the Coturn TURN server.

AI Integration

OpenAI GPT-4o Vision

Vision API identifies medications from caregiver pill photos. remove.bg API removes backgrounds from contact photos automatically.

Security & Compliance
Authentication

JWT + Device Keys

24-hour JWT tokens for caregiver sessions. Each kiosk holds a unique X-Device-Key, rotated on provisioning.

Access Control

Role-Based Permissions

Owner vs. member caregiver roles with per-feature permission flags. PIN-protected admin access on the kiosk device.

Privacy

GDPR Data Deletion

Self-service data deletion form. Device logs auto-purged after 30 days. Voice message and voicemail expiry enforced server-side.

Encryption

TLS Everywhere + HMAC

All traffic over TLS. TURN credentials time-limited with HMAC signatures. User passwords hashed with bcrypt (salted rounds).