# zedu-toucan-team/zedu-fe architecture

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

- Interactive diagram: https://gitdiagram.com/zedu-toucan-team/zedu-fe
- Repository: https://github.com/zedu-toucan-team/zedu-fe

## Overview

Zedu is a frontend for a cross-platform team workspace. The principal user journey is entering an organization and using its unified messaging and collaboration features, with search and AI coworkers helping users find information and automate work. The README also documents calls, file sharing, media/link organization, and cross-device continuity. Sampled code shows search dispatch, shared application state, API request handling, webhook controls, and Agora-based call/recording behavior. Several product areas are represented by their exact tree paths; their internal wiring was not sampled, so those links are documented at capability level.

Main entry points: [`src/app/(client)/[org]/client-layout.tsx`](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/client-layout.tsx) (Organization workspace), [`src/hooks/buzz/useChannelBuzz.ts`](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/hooks/buzz/useChannelBuzz.ts) (Buzz calls), [`src/utils/new-request.ts`](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/utils/new-request.ts) (HTTP request layer), [`src/components/search/search-bar.tsx`](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/components/search/search-bar.tsx) (Search interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Workspace experience"]
  node_workspace["Organization workspace<br/>[client-layout.tsx]"]
  node_files["File sharing<br/>[FileExplorer.tsx]"]
end

subgraph group_communication["Messaging and calls"]
  node_messages["Channels and DMs<br/>[page.tsx]"]
  node_composer["Message composition<br/>[index.tsx]"]
  node_calls["Buzz calls<br/>[useChannelBuzz.ts]"]
  node_agora["Agora client<br/>[useAgoraClient.ts]"]
  node_recording["Recording support"]
end

subgraph group_discovery["Search and discovery"]
  node_search_ui["Search interface<br/>[search-bar.tsx]"]
  node_search_logic["Search requests<br/>[api.ts]"]
  node_query["Query filters<br/>[query.ts]"]
end

subgraph group_assistance["AI coworkers"]
  node_agents["AI coworkers<br/>[active-agents.tsx]"]
  node_agent_workflows["Agent workflows<br/>[nodes-editor.tsx]"]
end

subgraph group_platform["Shared platform"]
  node_call_token["Call token API<br/>[route.ts]"]
  node_search_api["Search API route<br/>[route.ts]"]
  node_auth["Authentication<br/>[useAuth.ts]"]
  node_state["Shared application state<br/>[GlobalState.tsx]"]
  node_requests["HTTP request layer<br/>[new-request.ts]"]
  node_webhooks["Channel webhooks"]
  node_webhook_history["Webhook history"]
end

node_user(("Workspace user"))
node_backend{{"Zedu services"}}
node_realtime{{"Realtime call service"}}

node_user -->|"opens"| node_workspace
node_workspace -->|"uses messaging"| node_messages
node_workspace -->|"shares files"| node_files
node_workspace -->|"starts calls"| node_calls
node_workspace -->|"searches workspace"| node_search_ui
node_workspace -->|"uses AI coworkers"| node_agents
node_messages -.->|"composes messages"| node_composer
node_search_ui -->|"requests results"| node_search_logic
node_search_logic -->|"builds query"| node_query
node_search_ui -->|"searches people"| node_search_logic
node_search_ui -->|"opens direct chat"| node_backend
node_search_logic -->|"sends requests"| node_requests
node_requests -->|"calls services"| node_backend
node_search_api -.->|"serves search"| node_backend
node_calls -->|"creates client"| node_agora
node_calls -->|"gets token"| node_call_token
node_calls -->|"creates track"| node_recording
node_calls -->|"updates call"| node_requests
node_agora -->|"creates RTC client"| node_realtime
node_calls -->|"dispatches updates"| node_state
node_auth -->|"reads context"| node_state
node_webhooks -->|"manages webhook"| node_requests
node_webhook_history -->|"fetches history"| node_requests
node_agents -.->|"supports automation"| node_agent_workflows

click node_workspace "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/client-layout.tsx"
click node_messages "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/home/channels/page.tsx"
click node_composer "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/_components/message-box/index.tsx"
click node_files "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/_components/file-management/FileExplorer.tsx"
click node_calls "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/hooks/buzz/useChannelBuzz.ts"
click node_agora "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/hooks/buzz/useAgoraClient.ts"
click node_call_token "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/api/agora/token/route.ts"
click node_recording "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/lib/buzz/recording-placeholder-track.ts"
click node_search_ui "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/components/search/search-bar.tsx"
click node_search_logic "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/lib/search/api.ts"
click node_query "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/lib/search/query.ts"
click node_search_api "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/api/search/route.ts"
click node_agents "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/_components/agents/active-agents.tsx"
click node_agent_workflows "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/_components/tasks-lists/nodes-editor.tsx"
click node_auth "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/hooks/useAuth.ts"
click node_state "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/store/GlobalState.tsx"
click node_requests "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/utils/new-request.ts"
click node_webhooks "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/hooks/useChannelWebhook.ts"
click node_webhook_history "https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/hooks/useWebhookHistory.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_workspace,node_files,node_user toneBlue
class node_messages,node_composer,node_calls,node_agora,node_recording toneAmber
class node_search_ui,node_search_logic,node_query toneMint
class node_agents,node_agent_workflows toneRose
class node_call_token,node_search_api,node_auth,node_state,node_requests,node_webhooks,node_webhook_history,node_backend,node_realtime toneIndigo
```

## Components

### Workspace experience

- [Organization workspace](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/client-layout.tsx): `src/app/(client)/[org]/client-layout.tsx`
- [File sharing](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/_components/file-management/FileExplorer.tsx): `src/app/(client)/[org]/_components/file-management/FileExplorer.tsx`

### Messaging and calls

- [Channels and DMs](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/home/channels/page.tsx): `src/app/(client)/[org]/home/channels/page.tsx`
- [Message composition](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/_components/message-box/index.tsx): `src/app/(client)/[org]/_components/message-box/index.tsx`
- [Buzz calls](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/hooks/buzz/useChannelBuzz.ts): `src/hooks/buzz/useChannelBuzz.ts`
- [Agora client](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/hooks/buzz/useAgoraClient.ts): `src/hooks/buzz/useAgoraClient.ts`
- [Recording support](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/lib/buzz/recording-placeholder-track.ts): `src/lib/buzz/recording-placeholder-track.ts`

### Search and discovery

- [Search interface](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/components/search/search-bar.tsx): `src/components/search/search-bar.tsx`
- [Search requests](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/lib/search/api.ts): `src/lib/search/api.ts`
- [Query filters](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/lib/search/query.ts): `src/lib/search/query.ts`

### AI coworkers

- [AI coworkers](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/_components/agents/active-agents.tsx): `src/app/(client)/[org]/_components/agents/active-agents.tsx`
- [Agent workflows](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/(client)/%5Borg%5D/_components/tasks-lists/nodes-editor.tsx): `src/app/(client)/[org]/_components/tasks-lists/nodes-editor.tsx`

### Shared platform

- [Call token API](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/api/agora/token/route.ts): `src/app/api/agora/token/route.ts`
- [Search API route](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/app/api/search/route.ts): `src/app/api/search/route.ts`
- [Authentication](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/hooks/useAuth.ts): `src/hooks/useAuth.ts`
- [Shared application state](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/store/GlobalState.tsx): `src/store/GlobalState.tsx`
- [HTTP request layer](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/utils/new-request.ts): `src/utils/new-request.ts`
- [Channel webhooks](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/hooks/useChannelWebhook.ts): `src/hooks/useChannelWebhook.ts`
- [Webhook history](https://github.com/zedu-toucan-team/zedu-fe/blob/staging/src/hooks/useWebhookHistory.ts): `src/hooks/useWebhookHistory.ts`

### Other components

- **Workspace user**
- **Zedu services**
- **Realtime call service**

## Connections

- Workspace user → Organization workspace: opens (evidence: `README.md`)
- Organization workspace → Channels and DMs: uses messaging (evidence: `README.md`)
- Organization workspace → File sharing: shares files (evidence: `README.md`)
- Organization workspace → Buzz calls: starts calls (evidence: `README.md`)
- Organization workspace → Search interface: searches workspace (evidence: `README.md`)
- Organization workspace → AI coworkers: uses AI coworkers (evidence: `README.md`)
- Channels and DMs → Message composition: composes messages
- Search interface → Search requests: requests results (evidence: `src/components/search/search-bar.tsx`)
- Search requests → Query filters: builds query (evidence: `src/lib/search/api.ts`)
- Search interface → Search requests: searches people (evidence: `src/components/search/search-bar.tsx`)
- Search interface → Zedu services: opens direct chat (evidence: `src/components/search/search-bar.tsx`)
- Search requests → HTTP request layer: sends requests (evidence: `src/lib/search/api.ts`)
- HTTP request layer → Zedu services: calls services (evidence: `src/utils/new-request.ts`)
- Search API route → Zedu services: serves search
- Buzz calls → Agora client: creates client (evidence: `src/hooks/buzz/useChannelBuzz.ts`)
- Buzz calls → Call token API: gets token (evidence: `src/hooks/buzz/useChannelBuzz.ts`)
- Buzz calls → Recording support: creates track (evidence: `src/hooks/buzz/useChannelBuzz.ts`)
- Buzz calls → HTTP request layer: updates call (evidence: `src/hooks/buzz/useChannelBuzz.ts`)
- Agora client → Realtime call service: creates RTC client (evidence: `src/hooks/buzz/useAgoraClient.ts`)
- Buzz calls → Shared application state: dispatches updates (evidence: `src/hooks/buzz/useChannelBuzz.ts`)
- Authentication → Shared application state: reads context (evidence: `src/hooks/useAuth.ts`)
- Channel webhooks → HTTP request layer: manages webhook (evidence: `src/hooks/useChannelWebhook.ts`)
- Webhook history → HTTP request layer: fetches history (evidence: `src/hooks/useWebhookHistory.ts`)
- AI coworkers → Agent workflows: supports automation
