Appearance
Technology Stack
An overview of the languages, frameworks, and infrastructure used across the HVC platform.
Clients
| Area | Web (hippo-portal) | Mobile (hvcmobile) | Headset (hvc-xr) | Admin Console (hvc-admin-web) |
|---|---|---|---|---|
| Framework | Svelte 5 + TypeScript | Flutter 3.41 (Dart 3.5) | Flutter 3.0 (Dart 2.17) | Svelte 4 + SvelteKit 2 |
| Build / bundler | SvelteKit 2, Vite 7 | — | — | Vite 5 |
| State | Svelte runes | GetX | GetX | Svelte stores |
| Local data | — | ObjectBox 4 | ObjectBox 1.7 + sqflite | — |
| GraphQL client | Houdini | REST + GraphQL (headset) | GraphQL (HTTP+WS) | Houdini |
| Styling | Tailwind 4 + @rkosafo/cai.components | Material | Material | Tailwind + Flowbite + Skeleton |
| Auth | Keycloak (via cai.components) | AppAuth (OIDC) | AppAuth (OIDC) | Keycloak |
| Realtime | SignalR + WebSocket | SignalR | SignalR | — |
| Video | Pexip (WebRTC) | Pexip (custom) + flutter_webrtc | Pexip (hippo_web_rtc fork) | — |
| Push | — | OneSignal | OneSignal | — |
Backend
| Project | Framework / runtime | Data | Notes |
|---|---|---|---|
hvc-api | .NET 7 · ASP.NET Core | EF Core 7 (SqlServer) | HotChocolate 13 GraphQL, SignalR hub, MediatR/Wolverine, Proto.Actor |
hvc-admin-api | .NET 7 · ASP.NET Core | EF Core + Dapper | HotChocolate 14 (preview) GraphQL, Wolverine |
hvc-services | .NET 8 worker | EF Core | MailKit, MediatR, PubSub, Refit |
hvc-sinkapi | .NET 7 | Dapper | Refit (Pexip management API) |
hvc-ws | .NET 8 | in-memory | WebSockets only |
hvc-filePushApi | .NET 8 | — | Azure.Storage.Blobs |
hvc-webLogger | .NET 7 | — | Serilog → Seq |
hvc-storage | .NET 6 library | — | Azure Blob / MinIO / S3 / local |
hvc-shared | .NET 6 library | — | Functional helpers |
Infrastructure
| Piece | Role | Managed by |
|---|---|---|
| Keycloak | Identity provider; one realm per tenant (hippo-admin realm for the platform console) | hvc-api, hvc-admin-api |
| Pexip Infinity | Video conferencing; VMRs assigned to meetings | hvc-api (create), hvc-sinkapi (finalize) |
SignalR (/hubs/mobile) | Realtime calls, chat, presence, device control | hvc-api |
WebSockets (hvc-ws) | Call-room presence roster | hvc-ws |
| OvenMediaEngine | Meeting recording | hvc-api |
| Mailgun | Transactional email | hvc-api (outbox), hvc-services (sender) |
| SQL Server | Tenant DBs + admin DB | EF/Dapper |
| Azure Blob / MinIO / S3 | Object storage | hvc-storage |
| Seq | Centralized logs | all services |
| Metabase | Embedded dashboards | hvc-api, hvc-admin-api |
| Azure DevOps | CI/CD (see azure-pipelines.yml in hvc-docs) | — |
| Docker / Azure Container Registry | Container images (hippohub.azurecr.io/hvc) | — |
Cross-cutting
- Serilog → Seq for logging across all .NET services.
- Refit typed HTTP clients for external APIs (Pexip, Keycloak, Mailgun, Metabase).
- HotChocolate source generators for GraphQL schemas in both APIs.
- Hashids for opaque object/file naming.