# uniai-team/uniwork architecture

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

- Interactive diagram: https://gitdiagram.com/uniai-team/uniwork
- Repository: https://github.com/uniai-team/uniwork

## Overview

UniWork is a collaborative work platform organized around organizations and workspaces, combining task and project management, meetings with video calls, chat, and administrative capabilities. A member enters through authentication and workspace selection, then works in workspace-specific screens; task views query and mutate tasks through the core API and Go service layer. Meetings and chat are substantial parallel product areas, with realtime support and optional LiveKit integration. The README documents the backend handler-to-service-to-database layering. Some subsystem links reflect documented architecture and tree structure; unsampled implementation wiring is omitted.

Main entry points: [`apps/web/app/[orgSlug]/[workspaceSlug]`](https://github.com/uniai-team/uniwork/tree/main/apps/web/app/%5BorgSlug%5D/%5BworkspaceSlug%5D) (Workspace screens), [`packages/core/api`](https://github.com/uniai-team/uniwork/tree/main/packages/core/api) (HTTP and WS client), [`apps/web/app`](https://github.com/uniai-team/uniwork/tree/main/apps/web/app) (Next.js app), [`packages/core/chat`](https://github.com/uniai-team/uniwork/tree/main/packages/core/chat) (Chat client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_webapp["Next.js app"]
  node_auth["Authentication"]
  node_workspace["Workspace screens"]
  node_admin["Admin console"]
end

subgraph group_work["Work management"]
  node_taskui["Task surfaces"]
  node_taskcontroller["Task controller"]
  node_taskcore["Task queries"]
  node_taskapi["Task endpoints<br/>[tasks.ts]"]
  node_projects["Projects"]
end

subgraph group_collab["Collaboration"]
  node_chatui["Chat screens"]
  node_chatcore["Chat client"]
  node_meetings["Meetings"]
end

subgraph group_backend["Backend services"]
  node_router["HTTP routes<br/>[routes.go]"]
  node_taskservice["Task service<br/>[task_query.go]"]
  node_database[("PostgreSQL")]
  node_realtime["Realtime delivery<br/>[main.go]"]
end

subgraph group_platform["Platform infrastructure"]
  node_coreapi["HTTP and WS client"]
  node_redis[("Redis")]
  node_objectstore["Object storage<br/>[storage.go]"]
  node_flags["Feature flags"]
end

node_member(("Workspace member"))
node_livekit["LiveKit"]

node_member -->|"opens"| node_webapp
node_webapp -->|"renders auth"| node_auth
node_member -->|"selects workspace"| node_workspace
node_workspace -->|"opens tasks"| node_taskui
node_workspace -->|"opens chat"| node_chatui
node_workspace -->|"opens meetings"| node_meetings
node_taskui -->|"controls views"| node_taskcontroller
node_taskcontroller -->|"queries and mutates"| node_taskcore
node_taskcore -->|"calls endpoints"| node_taskapi
node_projects -->|"uses task APIs"| node_taskapi
node_chatui -->|"uses client"| node_chatcore
node_chatcore -->|"sends requests"| node_coreapi
node_meetings -->|"sends requests"| node_coreapi
node_taskapi -->|"sends requests"| node_coreapi
node_coreapi -->|"HTTP requests"| node_router
node_router -->|"dispatches task routes"| node_taskservice
node_taskservice -->|"queries tasks"| node_database
node_router -->|"serves WS routes"| node_realtime
node_realtime -.->|"relays events"| node_redis
node_meetings -.->|"joins video"| node_livekit
node_chatcore -.->|"uploads media"| node_objectstore
node_member -->|"administers platform"| node_admin
node_webapp -->|"reads configuration"| node_flags

click node_webapp "https://github.com/uniai-team/uniwork/tree/main/apps/web/app"
click node_auth "https://github.com/uniai-team/uniwork/tree/main/packages/views/auth"
click node_workspace "https://github.com/uniai-team/uniwork/tree/main/apps/web/app/%5BorgSlug%5D/%5BworkspaceSlug%5D"
click node_taskui "https://github.com/uniai-team/uniwork/tree/main/packages/views/tasks"
click node_taskcontroller "https://github.com/uniai-team/uniwork/blob/main/packages/views/tasks/surface/use-task-surface-controller.ts"
click node_taskcore "https://github.com/uniai-team/uniwork/tree/main/packages/core/tasks"
click node_taskapi "https://github.com/uniai-team/uniwork/blob/main/packages/core/api/endpoints/tasks.ts"
click node_projects "https://github.com/uniai-team/uniwork/tree/main/packages/core/projects"
click node_chatui "https://github.com/uniai-team/uniwork/tree/main/packages/views/chat"
click node_chatcore "https://github.com/uniai-team/uniwork/tree/main/packages/core/chat"
click node_meetings "https://github.com/uniai-team/uniwork/tree/main/packages/core/meetings"
click node_coreapi "https://github.com/uniai-team/uniwork/tree/main/packages/core/api"
click node_router "https://github.com/uniai-team/uniwork/blob/main/server/internal/handler/router/routes.go"
click node_taskservice "https://github.com/uniai-team/uniwork/blob/main/server/internal/service/task_query.go"
click node_realtime "https://github.com/uniai-team/uniwork/blob/main/server/cmd/server/main.go"
click node_objectstore "https://github.com/uniai-team/uniwork/blob/main/server/internal/storage/storage.go"
click node_admin "https://github.com/uniai-team/uniwork/tree/main/packages/views/admin"
click node_flags "https://github.com/uniai-team/uniwork/tree/main/packages/core/feature-flags"

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_webapp,node_auth,node_workspace,node_admin toneBlue
class node_taskui,node_taskcontroller,node_taskcore,node_taskapi,node_projects toneAmber
class node_chatui,node_chatcore,node_meetings toneMint
class node_router,node_taskservice,node_database,node_realtime toneRose
class node_coreapi,node_redis,node_objectstore,node_flags,node_member,node_livekit toneIndigo
```

## Components

### Web experience

- [Next.js app](https://github.com/uniai-team/uniwork/tree/main/apps/web/app): `apps/web/app`
- [Authentication](https://github.com/uniai-team/uniwork/tree/main/packages/views/auth): `packages/views/auth`
- [Workspace screens](https://github.com/uniai-team/uniwork/tree/main/apps/web/app/%5BorgSlug%5D/%5BworkspaceSlug%5D): `apps/web/app/[orgSlug]/[workspaceSlug]`
- [Admin console](https://github.com/uniai-team/uniwork/tree/main/packages/views/admin): `packages/views/admin`

### Work management

- [Task surfaces](https://github.com/uniai-team/uniwork/tree/main/packages/views/tasks): `packages/views/tasks`
- [Task controller](https://github.com/uniai-team/uniwork/blob/main/packages/views/tasks/surface/use-task-surface-controller.ts): `packages/views/tasks/surface/use-task-surface-controller.ts`
- [Task queries](https://github.com/uniai-team/uniwork/tree/main/packages/core/tasks): `packages/core/tasks`
- [Task endpoints](https://github.com/uniai-team/uniwork/blob/main/packages/core/api/endpoints/tasks.ts): `packages/core/api/endpoints/tasks.ts`
- [Projects](https://github.com/uniai-team/uniwork/tree/main/packages/core/projects): `packages/core/projects`

### Collaboration

- [Chat screens](https://github.com/uniai-team/uniwork/tree/main/packages/views/chat): `packages/views/chat`
- [Chat client](https://github.com/uniai-team/uniwork/tree/main/packages/core/chat): `packages/core/chat`
- [Meetings](https://github.com/uniai-team/uniwork/tree/main/packages/core/meetings): `packages/core/meetings`

### Backend services

- [HTTP routes](https://github.com/uniai-team/uniwork/blob/main/server/internal/handler/router/routes.go): `server/internal/handler/router/routes.go`
- [Task service](https://github.com/uniai-team/uniwork/blob/main/server/internal/service/task_query.go): `server/internal/service/task_query.go`
- **PostgreSQL**
- [Realtime delivery](https://github.com/uniai-team/uniwork/blob/main/server/cmd/server/main.go): `server/cmd/server/main.go`

### Platform infrastructure

- [HTTP and WS client](https://github.com/uniai-team/uniwork/tree/main/packages/core/api): `packages/core/api`
- **Redis**
- [Object storage](https://github.com/uniai-team/uniwork/blob/main/server/internal/storage/storage.go): `server/internal/storage/storage.go`
- [Feature flags](https://github.com/uniai-team/uniwork/tree/main/packages/core/feature-flags): `packages/core/feature-flags`

### Other components

- **Workspace member**
- **LiveKit**

## Connections

- Workspace member → Next.js app: opens
- Next.js app → Authentication: renders auth
- Workspace member → Workspace screens: selects workspace
- Workspace screens → Task surfaces: opens tasks
- Workspace screens → Chat screens: opens chat
- Workspace screens → Meetings: opens meetings
- Task surfaces → Task controller: controls views
- Task controller → Task queries: queries and mutates
- Task queries → Task endpoints: calls endpoints
- Projects → Task endpoints: uses task APIs
- Chat screens → Chat client: uses client
- Chat client → HTTP and WS client: sends requests
- Meetings → HTTP and WS client: sends requests
- Task endpoints → HTTP and WS client: sends requests
- HTTP and WS client → HTTP routes: HTTP requests
- HTTP routes → Task service: dispatches task routes
- Task service → PostgreSQL: queries tasks
- HTTP routes → Realtime delivery: serves WS routes
- Realtime delivery → Redis: relays events
- Meetings → LiveKit: joins video
- Chat client → Object storage: uploads media
- Workspace member → Admin console: administers platform
- Next.js app → Feature flags: reads configuration
