Skip to content

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) ​

FromToHow
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 Storagemedia & photo upload / signed URLs (AzureBlobStorageAdapter)
API (Node.js)Azure Key Vaultsecret retrieval (AzureKeyVaultAdapter)
API (Node.js)Cloudflare Streamlive 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 packagetyped API wrapper (@hch/api-client)
api-client packageAPI (Node.js)HTTP REST calls to API
API (Node.js)shared-types packageshared TypeScript types
Web (React PWA)shared-types packageshared TypeScript types
Mobile (React Native / Expo)shared-types packageshared TypeScript types

Heritage Community Hub — Internal. Access restricted via Cloudflare Access + Entra ID.