# joshuacreator-rgb/project-likas architecture

> Architecture diagram of the GitHub repository joshuacreator-rgb/project-likas, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/joshuacreator-rgb/project-likas
- Repository: https://github.com/joshuacreator-rgb/project-likas

## Overview

Likas is a disaster-response and evacuation-operations application for administrators, center staff, responders, and citizens. Users authenticate or register, then use role-specific dashboards to manage centers, evacuees, resources, incidents, and citizen emergency reports. The server exposes tRPC procedures backed by database helpers, with an SSE channel for citizen updates. The tree and excerpts support these main responsibilities, but several dashboard and router implementations were not sampled; edges to those subsystems are omitted where their callers are not evidenced.

Main entry points: [`server/_core/index.ts`](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/index.ts) (Express server), [`client/src/App.tsx`](https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/App.tsx) (Route shell), [`server/routers.ts`](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/routers.ts) (API procedures), [`server/db.ts`](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/db.ts) (Data access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web experience"]
  node_app["Route shell<br/>[App.tsx]"]
  node_login["Sign-in<br/>[Login.tsx]"]
  node_registration["Registration"]
  node_admin_dashboard["Operations dashboard<br/>[Home.tsx]"]
  node_citizen_dashboard["Citizen portal<br/>[CitizenHome.tsx]"]
  node_dashboard_components["Dashboard components"]
  node_api_client["tRPC client<br/>[trpc.ts]"]
end

subgraph group_api["API and identity"]
  node_server["Express server<br/>[index.ts]"]
  node_api_router["API procedures<br/>[routers.ts]"]
  node_system_router["System procedures<br/>[systemRouter.ts]"]
  node_identity["Request identity<br/>[context.ts]"]
  node_auth_support["Auth support"]
  node_oauth["OAuth routes<br/>[oauth.ts]"]
end

subgraph group_operations["Response operations"]
  node_operations_logic["Operations rules<br/>[operations.ts]"]
  node_citizen_logic["Citizen utilities<br/>[citizen.ts]"]
  node_realtime["Realtime stream<br/>[realtime.ts]"]
end

subgraph group_platform["Persistence and integrations"]
  node_database_helpers["Data access<br/>[db.ts]"]
  node_schema["Relational schema<br/>[schema.ts]"]
  node_database[("SQL database")]
  node_storage["Storage helpers<br/>[storage.ts]"]
  node_storage_proxy["Storage proxy<br/>[storageProxy.ts]"]
  node_email["Email delivery<br/>[email.ts]"]
  node_notification["Owner notifications<br/>[notification.ts]"]
  node_environment["Runtime config<br/>[env.ts]"]
end

node_user(("User"))
node_forge["Forge storage service"]

node_user -->|"opens"| node_app
node_app -->|"routes to"| node_login
node_app -->|"routes to"| node_registration
node_app -->|"routes to"| node_admin_dashboard
node_app -->|"routes to"| node_citizen_dashboard
node_server -->|"mounts"| node_api_router
node_server -->|"creates context"| node_identity
node_server -->|"registers"| node_oauth
node_server -->|"registers"| node_storage_proxy
node_server -->|"subscribes"| node_realtime
node_api_router -->|"includes"| node_system_router
node_api_router -->|"calls"| node_database_helpers
node_api_router -->|"uses rules"| node_operations_logic
node_api_router -->|"calls"| node_email
node_identity -->|"loads user"| node_database_helpers
node_identity -->|"uses"| node_schema
node_system_router -->|"calls"| node_notification
node_citizen_logic -->|"uses headline"| node_operations_logic
node_database_helpers -->|"queries"| node_schema
node_database_helpers -->|"reads and writes"| node_database
node_storage -->|"reads config"| node_environment
node_storage -->|"requests upload URLs"| node_forge
node_storage_proxy -->|"requests signed URL"| node_forge
node_storage_proxy -->|"reads config"| node_environment
node_oauth -->|"calls"| node_database_helpers
node_oauth -->|"uses cookies and SDK"| node_auth_support
node_email -->|"reads config"| node_environment
node_notification -.->|"uses config"| node_environment
node_dashboard_components -.->|"supports"| node_admin_dashboard
node_api_client -.->|"sends requests"| node_server
node_admin_dashboard -.->|"uses"| node_api_client
node_citizen_dashboard -.->|"uses"| node_api_client
node_citizen_dashboard -->|"uses utilities"| node_citizen_logic

click node_app "https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/App.tsx"
click node_login "https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/pages/Login.tsx"
click node_registration "https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/pages/AccountRegister.tsx"
click node_admin_dashboard "https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/pages/Home.tsx"
click node_citizen_dashboard "https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/pages/CitizenHome.tsx"
click node_dashboard_components "https://github.com/joshuacreator-rgb/project-likas/tree/main/client/src/components"
click node_api_client "https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/lib/trpc.ts"
click node_server "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/index.ts"
click node_api_router "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/routers.ts"
click node_system_router "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/systemRouter.ts"
click node_identity "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/context.ts"
click node_auth_support "https://github.com/joshuacreator-rgb/project-likas/tree/main/server/_core"
click node_operations_logic "https://github.com/joshuacreator-rgb/project-likas/blob/main/shared/operations.ts"
click node_citizen_logic "https://github.com/joshuacreator-rgb/project-likas/blob/main/shared/citizen.ts"
click node_realtime "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/realtime.ts"
click node_database_helpers "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/db.ts"
click node_schema "https://github.com/joshuacreator-rgb/project-likas/blob/main/drizzle/schema.ts"
click node_storage "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/storage.ts"
click node_storage_proxy "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/storageProxy.ts"
click node_oauth "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/oauth.ts"
click node_email "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/email.ts"
click node_notification "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/notification.ts"
click node_environment "https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/env.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_login,node_registration,node_admin_dashboard,node_citizen_dashboard,node_dashboard_components,node_api_client,node_user toneBlue
class node_server,node_api_router,node_system_router,node_identity,node_auth_support,node_oauth,node_forge toneAmber
class node_operations_logic,node_citizen_logic,node_realtime toneMint
class node_database_helpers,node_schema,node_database,node_storage,node_storage_proxy,node_email,node_notification,node_environment toneRose
```

## Components

### Web experience

- [Route shell](https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/App.tsx): `client/src/App.tsx`
- [Sign-in](https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/pages/Login.tsx): `client/src/pages/Login.tsx`
- [Registration](https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/pages/AccountRegister.tsx): `client/src/pages/AccountRegister.tsx`
- [Operations dashboard](https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/pages/Home.tsx): `client/src/pages/Home.tsx`
- [Citizen portal](https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/pages/CitizenHome.tsx): `client/src/pages/CitizenHome.tsx`
- [Dashboard components](https://github.com/joshuacreator-rgb/project-likas/tree/main/client/src/components): `client/src/components`
- [tRPC client](https://github.com/joshuacreator-rgb/project-likas/blob/main/client/src/lib/trpc.ts): `client/src/lib/trpc.ts`

### API and identity

- [Express server](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/index.ts): `server/_core/index.ts`
- [API procedures](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/routers.ts): `server/routers.ts`
- [System procedures](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/systemRouter.ts): `server/_core/systemRouter.ts`
- [Request identity](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/context.ts): `server/_core/context.ts`
- [Auth support](https://github.com/joshuacreator-rgb/project-likas/tree/main/server/_core): `server/_core`
- [OAuth routes](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/oauth.ts): `server/_core/oauth.ts`

### Response operations

- [Operations rules](https://github.com/joshuacreator-rgb/project-likas/blob/main/shared/operations.ts): `shared/operations.ts`
- [Citizen utilities](https://github.com/joshuacreator-rgb/project-likas/blob/main/shared/citizen.ts): `shared/citizen.ts`
- [Realtime stream](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/realtime.ts): `server/_core/realtime.ts`

### Persistence and integrations

- [Data access](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/db.ts): `server/db.ts`
- [Relational schema](https://github.com/joshuacreator-rgb/project-likas/blob/main/drizzle/schema.ts): `drizzle/schema.ts`
- **SQL database**
- [Storage helpers](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/storage.ts): `server/storage.ts`
- [Storage proxy](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/storageProxy.ts): `server/_core/storageProxy.ts`
- [Email delivery](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/email.ts): `server/_core/email.ts`
- [Owner notifications](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/notification.ts): `server/_core/notification.ts`
- [Runtime config](https://github.com/joshuacreator-rgb/project-likas/blob/main/server/_core/env.ts): `server/_core/env.ts`

### Other components

- **User**
- **Forge storage service**

## Connections

- User → Route shell: opens (evidence: `client/src/App.tsx`)
- Route shell → Sign-in: routes to (evidence: `client/src/App.tsx`)
- Route shell → Registration: routes to (evidence: `client/src/App.tsx`)
- Route shell → Operations dashboard: routes to (evidence: `client/src/App.tsx`)
- Route shell → Citizen portal: routes to (evidence: `client/src/App.tsx`)
- Express server → API procedures: mounts (evidence: `server/_core/index.ts`)
- Express server → Request identity: creates context (evidence: `server/_core/index.ts`)
- Express server → OAuth routes: registers (evidence: `server/_core/index.ts`)
- Express server → Storage proxy: registers (evidence: `server/_core/index.ts`)
- Express server → Realtime stream: subscribes (evidence: `server/_core/index.ts`)
- API procedures → System procedures: includes (evidence: `server/routers.ts`)
- API procedures → Data access: calls (evidence: `server/routers.ts`)
- API procedures → Operations rules: uses rules (evidence: `server/routers.ts`)
- API procedures → Email delivery: calls (evidence: `server/routers.ts`)
- Request identity → Data access: loads user (evidence: `server/_core/context.ts`)
- Request identity → Relational schema: uses (evidence: `server/_core/context.ts`)
- System procedures → Owner notifications: calls (evidence: `server/_core/systemRouter.ts`)
- Citizen utilities → Operations rules: uses headline (evidence: `shared/citizen.ts`)
- Data access → Relational schema: queries (evidence: `server/db.ts`)
- Data access → SQL database: reads and writes (evidence: `server/db.ts`)
- Storage helpers → Runtime config: reads config (evidence: `server/storage.ts`)
- Storage helpers → Forge storage service: requests upload URLs (evidence: `server/storage.ts`)
- Storage proxy → Forge storage service: requests signed URL (evidence: `server/_core/storageProxy.ts`)
- Storage proxy → Runtime config: reads config (evidence: `server/_core/storageProxy.ts`)
- OAuth routes → Data access: calls (evidence: `server/_core/oauth.ts`)
- OAuth routes → Auth support: uses cookies and SDK (evidence: `server/_core/oauth.ts`)
- Email delivery → Runtime config: reads config (evidence: `server/_core/email.ts`)
- Owner notifications → Runtime config: uses config
- Dashboard components → Operations dashboard: supports
- tRPC client → Express server: sends requests
- Operations dashboard → tRPC client: uses
- Citizen portal → tRPC client: uses
- Citizen portal → Citizen utilities: uses utilities (evidence: `client/src/pages/CitizenHome.tsx`)
