# xmissingshadowx/sosecure architecture

> Architecture diagram of the GitHub repository xmissingshadowx/sosecure, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/xmissingshadowx/sosecure
- Repository: https://github.com/xmissingshadowx/sosecure

## Overview

SOSecure is a personal-safety app whose primary workflow is activating an SOS, capturing evidence and location, and notifying emergency contacts; users can then follow the live alert. Its broader product includes community incident mapping, safer-route planning, shared tracking, wellbeing support, and subscription plans. The README documents several capabilities whose implementation is not present in the sampled source, so those branches are represented at their documented app paths without speculative internal wiring.

Main entry points: [`lib/supabase/server.ts`](https://github.com/xmissingshadowx/sosecure/blob/main/lib/supabase/server.ts) (Supabase services), [`components/sos-button.tsx`](https://github.com/xmissingshadowx/sosecure/blob/main/components/sos-button.tsx) (SOS controls), [`components/tabs/map-tab.tsx`](https://github.com/xmissingshadowx/sosecure/blob/main/components/tabs/map-tab.tsx) (Safety tabs), [`app/api/emergency-chat/route.ts`](https://github.com/xmissingshadowx/sosecure/blob/main/app/api/emergency-chat/route.ts) (Emergency API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["App experience"]
  node_app["Safety app<br/>[page.tsx]"]
  node_shell["App shell<br/>[app-shell.tsx]"]
  node_tabs["Safety tabs<br/>[map-tab.tsx]"]
end

subgraph group_safety["SOS and tracking"]
  node_sos["SOS controls<br/>[sos-button.tsx]"]
  node_capture["Evidence recording<br/>[recordings.ts]"]
  node_emergency_api["Emergency API<br/>[route.ts]"]
  node_alert_page["Live alert page<br/>[page.tsx]"]
  node_video_api["Alert video API<br/>[route.ts]"]
  node_location["Location tracking"]
  node_tracking_api["Tracking location API<br/>[route.ts]"]
  node_tracking_page["Shared tracking page<br/>[page.tsx]"]
  node_tracking_invite["Tracking invitations<br/>[route.ts]"]
end

subgraph group_community["Maps and routes"]
  node_incident_map["Incident map<br/>[incident-map.tsx]"]
  node_route_tab["Safe route planner<br/>[routes-tab.tsx]"]
  node_route_map["Route map<br/>[route-map.tsx]"]
end

subgraph group_wellbeing["Wellbeing and plans"]
  node_wellbeing_chat["Wellbeing chat<br/>[emergency-chat.tsx]"]
  node_chat_api["AI chat API<br/>[route.ts]"]
  node_plans["Plan management"]
  node_premium_checkout["Premium checkout<br/>[route.ts]"]
  node_family_checkout["Family checkout<br/>[route.ts]"]
  node_family_invite["Family invitations<br/>[route.ts]"]
end

subgraph group_backend["Backend and state"]
  node_supabase["Supabase services<br/>[server.ts]"]
  node_db[("App data and storage")]
end

node_person(("App user"))
node_anthropic["Anthropic Claude"]
node_payments["Mercado Pago / PayPal"]
node_contacts(("Emergency contacts"))
node_resend["Resend email"]

node_person -->|"opens"| node_app
node_app -->|"renders"| node_shell
node_shell -->|"offers SOS"| node_sos
node_sos -->|"captures evidence"| node_capture
node_sos -->|"submits alert"| node_emergency_api
node_emergency_api -->|"stores alert"| node_supabase
node_capture -->|"uploads recordings"| node_db
node_supabase -->|"reads and writes"| node_db
node_person -->|"opens alert link"| node_alert_page
node_alert_page -->|"reads alert"| node_supabase
node_sos -->|"requests video"| node_video_api
node_person -->|"shares location"| node_location
node_location -->|"sends coordinates"| node_tracking_api
node_tracking_api -->|"updates session"| node_supabase
node_tracking_page -->|"reads session"| node_supabase
node_tracking_invite -->|"sends invitations"| node_resend
node_person -->|"uses"| node_tabs
node_tabs -->|"shows incidents"| node_incident_map
node_tabs -->|"plans route"| node_route_tab
node_route_tab -->|"displays routes"| node_route_map
node_person -->|"asks for support"| node_wellbeing_chat
node_wellbeing_chat -->|"sends messages"| node_chat_api
node_chat_api -->|"checks access"| node_supabase
node_chat_api -->|"requests response"| node_anthropic
node_person -->|"selects plan"| node_plans
node_plans -->|"starts subscription"| node_premium_checkout
node_plans -->|"starts family plan"| node_family_checkout
node_premium_checkout -->|"creates subscription"| node_payments
node_family_checkout -->|"creates subscription"| node_payments
node_premium_checkout -->|"updates subscription"| node_supabase
node_family_checkout -->|"updates group"| node_supabase
node_family_invite -->|"records members"| node_supabase
node_family_invite -->|"sends invites"| node_resend
node_sos -->|"alerts contacts"| node_contacts
node_emergency_api -.->|"notifies contacts"| node_resend

click node_app "https://github.com/xmissingshadowx/sosecure/blob/main/app/page.tsx"
click node_shell "https://github.com/xmissingshadowx/sosecure/blob/main/components/app-shell.tsx"
click node_sos "https://github.com/xmissingshadowx/sosecure/blob/main/components/sos-button.tsx"
click node_capture "https://github.com/xmissingshadowx/sosecure/blob/main/lib/recordings.ts"
click node_emergency_api "https://github.com/xmissingshadowx/sosecure/blob/main/app/api/emergency-chat/route.ts"
click node_alert_page "https://github.com/xmissingshadowx/sosecure/blob/main/app/emergency/%5BalertId%5D/page.tsx"
click node_video_api "https://github.com/xmissingshadowx/sosecure/blob/main/app/api/emergency/%5BalertId%5D/video/route.ts"
click node_location "https://github.com/xmissingshadowx/sosecure/blob/main/hooks/use-live-location.ts"
click node_tracking_api "https://github.com/xmissingshadowx/sosecure/blob/main/app/api/tracking-location/route.ts"
click node_tracking_page "https://github.com/xmissingshadowx/sosecure/blob/main/app/tracking/%5BsessionId%5D/page.tsx"
click node_tracking_invite "https://github.com/xmissingshadowx/sosecure/blob/main/app/api/tracking-invite/route.ts"
click node_tabs "https://github.com/xmissingshadowx/sosecure/blob/main/components/tabs/map-tab.tsx"
click node_incident_map "https://github.com/xmissingshadowx/sosecure/blob/main/components/incident-map.tsx"
click node_route_tab "https://github.com/xmissingshadowx/sosecure/blob/main/components/tabs/routes-tab.tsx"
click node_route_map "https://github.com/xmissingshadowx/sosecure/blob/main/components/route-map.tsx"
click node_wellbeing_chat "https://github.com/xmissingshadowx/sosecure/blob/main/components/emergency-chat.tsx"
click node_chat_api "https://github.com/xmissingshadowx/sosecure/blob/main/app/api/chat/route.ts"
click node_plans "https://github.com/xmissingshadowx/sosecure/blob/main/components/premium-plan-section.tsx"
click node_premium_checkout "https://github.com/xmissingshadowx/sosecure/blob/main/app/api/premium/checkout/route.ts"
click node_family_checkout "https://github.com/xmissingshadowx/sosecure/blob/main/app/api/family/checkout/route.ts"
click node_family_invite "https://github.com/xmissingshadowx/sosecure/blob/main/app/api/family/invite/route.ts"
click node_supabase "https://github.com/xmissingshadowx/sosecure/blob/main/lib/supabase/server.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_shell,node_tabs,node_person toneBlue
class node_sos,node_capture,node_emergency_api,node_alert_page,node_video_api,node_location,node_tracking_api,node_tracking_page,node_tracking_invite toneAmber
class node_incident_map,node_route_tab,node_route_map toneMint
class node_wellbeing_chat,node_chat_api,node_plans,node_premium_checkout,node_family_checkout,node_family_invite toneRose
class node_supabase,node_db,node_anthropic,node_payments,node_contacts,node_resend toneIndigo
```

## Components

### App experience

- [Safety app](https://github.com/xmissingshadowx/sosecure/blob/main/app/page.tsx): `app/page.tsx`
- [App shell](https://github.com/xmissingshadowx/sosecure/blob/main/components/app-shell.tsx): `components/app-shell.tsx`
- [Safety tabs](https://github.com/xmissingshadowx/sosecure/blob/main/components/tabs/map-tab.tsx): `components/tabs/map-tab.tsx`

### SOS and tracking

- [SOS controls](https://github.com/xmissingshadowx/sosecure/blob/main/components/sos-button.tsx): `components/sos-button.tsx`
- [Evidence recording](https://github.com/xmissingshadowx/sosecure/blob/main/lib/recordings.ts): `lib/recordings.ts`
- [Emergency API](https://github.com/xmissingshadowx/sosecure/blob/main/app/api/emergency-chat/route.ts): `app/api/emergency-chat/route.ts`
- [Live alert page](https://github.com/xmissingshadowx/sosecure/blob/main/app/emergency/%5BalertId%5D/page.tsx): `app/emergency/[alertId]/page.tsx`
- [Alert video API](https://github.com/xmissingshadowx/sosecure/blob/main/app/api/emergency/%5BalertId%5D/video/route.ts): `app/api/emergency/[alertId]/video/route.ts`
- [Location tracking](https://github.com/xmissingshadowx/sosecure/blob/main/hooks/use-live-location.ts): `hooks/use-live-location.ts`
- [Tracking location API](https://github.com/xmissingshadowx/sosecure/blob/main/app/api/tracking-location/route.ts): `app/api/tracking-location/route.ts`
- [Shared tracking page](https://github.com/xmissingshadowx/sosecure/blob/main/app/tracking/%5BsessionId%5D/page.tsx): `app/tracking/[sessionId]/page.tsx`
- [Tracking invitations](https://github.com/xmissingshadowx/sosecure/blob/main/app/api/tracking-invite/route.ts): `app/api/tracking-invite/route.ts`

### Maps and routes

- [Incident map](https://github.com/xmissingshadowx/sosecure/blob/main/components/incident-map.tsx): `components/incident-map.tsx`
- [Safe route planner](https://github.com/xmissingshadowx/sosecure/blob/main/components/tabs/routes-tab.tsx): `components/tabs/routes-tab.tsx`
- [Route map](https://github.com/xmissingshadowx/sosecure/blob/main/components/route-map.tsx): `components/route-map.tsx`

### Wellbeing and plans

- [Wellbeing chat](https://github.com/xmissingshadowx/sosecure/blob/main/components/emergency-chat.tsx): `components/emergency-chat.tsx`
- [AI chat API](https://github.com/xmissingshadowx/sosecure/blob/main/app/api/chat/route.ts): `app/api/chat/route.ts`
- [Plan management](https://github.com/xmissingshadowx/sosecure/blob/main/components/premium-plan-section.tsx): `components/premium-plan-section.tsx`
- [Premium checkout](https://github.com/xmissingshadowx/sosecure/blob/main/app/api/premium/checkout/route.ts): `app/api/premium/checkout/route.ts`
- [Family checkout](https://github.com/xmissingshadowx/sosecure/blob/main/app/api/family/checkout/route.ts): `app/api/family/checkout/route.ts`
- [Family invitations](https://github.com/xmissingshadowx/sosecure/blob/main/app/api/family/invite/route.ts): `app/api/family/invite/route.ts`

### Backend and state

- [Supabase services](https://github.com/xmissingshadowx/sosecure/blob/main/lib/supabase/server.ts): `lib/supabase/server.ts`
- **App data and storage**

### Other components

- **App user**
- **Anthropic Claude**
- **Mercado Pago / PayPal**
- **Emergency contacts**
- **Resend email**

## Connections

- App user → Safety app: opens
- Safety app → App shell: renders
- App shell → SOS controls: offers SOS
- SOS controls → Evidence recording: captures evidence
- SOS controls → Emergency API: submits alert
- Emergency API → Supabase services: stores alert
- Evidence recording → App data and storage: uploads recordings
- Supabase services → App data and storage: reads and writes
- App user → Live alert page: opens alert link
- Live alert page → Supabase services: reads alert
- SOS controls → Alert video API: requests video
- App user → Location tracking: shares location
- Location tracking → Tracking location API: sends coordinates
- Tracking location API → Supabase services: updates session
- Shared tracking page → Supabase services: reads session
- Tracking invitations → Resend email: sends invitations
- App user → Safety tabs: uses
- Safety tabs → Incident map: shows incidents
- Safety tabs → Safe route planner: plans route
- Safe route planner → Route map: displays routes
- App user → Wellbeing chat: asks for support
- Wellbeing chat → AI chat API: sends messages
- AI chat API → Supabase services: checks access
- AI chat API → Anthropic Claude: requests response
- App user → Plan management: selects plan
- Plan management → Premium checkout: starts subscription
- Plan management → Family checkout: starts family plan
- Premium checkout → Mercado Pago / PayPal: creates subscription
- Family checkout → Mercado Pago / PayPal: creates subscription
- Premium checkout → Supabase services: updates subscription
- Family checkout → Supabase services: updates group
- Family invitations → Supabase services: records members
- Family invitations → Resend email: sends invites
- SOS controls → Emergency contacts: alerts contacts
- Emergency API → Resend email: notifies contacts
