Appearance
Service map ​
Derived statically from source — no telemetry or connection string required. Generated: 2026-06-29T03:50:28.288Z
Nodes (15) ​
Applications ​
- API (Node.js)
apps/api/src - Web (React PWA)
apps/web/src - Mobile (React Native / Expo)
apps/mobile/src
Shared packages ​
- api-client package
packages/api-client - shared-types package
packages/shared-types
External services ​
- Clerk (Auth) — external: clerk.com
- PostgreSQL (via Prisma) — external: Azure Database for PostgreSQL
- Azure Blob Storage — external: Azure Storage (AzureBlobStorageAdapter)
- Azure Key Vault — external: Azure Key Vault (AzureKeyVaultAdapter)
- Cloudflare Stream — external: Cloudflare Stream (CloudflareStreamAdapter)
- SendGrid (Email) — external: SendGrid (SendGridAdapter)
- Twilio (SMS) — external: Twilio (TwilioAdapter)
- Expo Push (Mobile notifications) — external: Expo Push Notifications (ExpoPushAdapter)
- Web Push (VAPID) — external: Web Push API (VAPID via web-push library)
- YouTube Embed (Live fallback) — external: YouTube (YouTubeEmbedLiveProvider)
Connections (19) ​
| From | To | How |
|---|---|---|
| Web (React PWA) | API (Node.js) | HTTP REST via useApiFetch |
| Mobile (React Native / Expo) | API (Node.js) | HTTP REST via @hch/api-client + fetch |
| Web (React PWA) | Clerk (Auth) | social sign-in (@clerk/react) |
| Mobile (React Native / Expo) | Clerk (Auth) | social sign-in (@clerk/clerk-expo) |
| API (Node.js) | Clerk (Auth) | JWT verification (@clerk/backend) |
| API (Node.js) | PostgreSQL (via Prisma) | ORM queries (Prisma → PostgreSQL) |
| API (Node.js) | Azure Blob Storage | media & photo upload / signed URLs (AzureBlobStorageAdapter) |
| API (Node.js) | Azure Key Vault | secret retrieval (AzureKeyVaultAdapter) |
| API (Node.js) | Cloudflare Stream | live event ingest & playback (CloudflareStreamAdapter) |
| API (Node.js) | YouTube Embed (Live fallback) | live embed fallback (YouTubeEmbedLiveProvider) |
| API (Node.js) | SendGrid (Email) | transactional email (Notifier → SendGridAdapter) |
| API (Node.js) | Twilio (SMS) | SMS notifications (Notifier → TwilioAdapter) |
| API (Node.js) | Expo Push (Mobile notifications) | mobile push (Notifier → ExpoPushAdapter) |
| API (Node.js) | Web Push (VAPID) | PWA push (Notifier → web-push VAPID) |
| Mobile (React Native / Expo) | api-client package | typed API wrapper (@hch/api-client) |
| api-client package | API (Node.js) | HTTP REST calls to API |
| API (Node.js) | shared-types package | shared TypeScript types |
| Web (React PWA) | shared-types package | shared TypeScript types |
| Mobile (React Native / Expo) | shared-types package | shared TypeScript types |