# dkyr-g1thu6/outline_repo architecture

> Architecture diagram of the GitHub repository dkyr-g1thu6/outline_repo, 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/dkyr-g1thu6/outline_repo
- Repository: https://github.com/dkyr-g1thu6/outline_repo

## Overview

Outline is a collaborative team knowledge base. Users sign in, navigate or search team content, then create and edit documents, collaborate, and manage sharing; settings and integrations support workspace administration. The graph also preserves the editor’s Markdown extension layer, domain models, file storage, and plugin integration points. The supplied excerpts do not show the main route-to-store-to-API flow, so uncertain connections are omitted or marked dashed rather than inferred as direct calls.

Main entry points: [`app/scenes/Document/index.tsx`](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Document/index.tsx) (Document workflow), [`app/scenes/Home.tsx`](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Home.tsx) (Workspace navigation), [`server/routes/app.ts`](https://github.com/dkyr-g1thu6/outline_repo/blob/main/server/routes/app.ts) (HTTP API), [`server/utils/PluginManager.ts`](https://github.com/dkyr-g1thu6/outline_repo/blob/main/server/utils/PluginManager.ts) (Server plugin manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client experience"]
  node_routes["App routing<br/>[index.tsx]"]
  node_home["Workspace navigation<br/>[Home.tsx]"]
  node_search["Search<br/>[Search.tsx]"]
  node_settings["Workspace settings<br/>[Application.tsx]"]
end

subgraph group_content["Content and collaboration"]
  node_collection["Collections<br/>[index.tsx]"]
  node_document["Document workflow<br/>[index.tsx]"]
  node_editor["Document editor<br/>[index.tsx]"]
  node_editor_extensions["Editor extensions"]
  node_comments["Comments<br/>[Comments.tsx]"]
  node_sharing["Sharing controls<br/>[index.tsx]"]
end

subgraph group_domain["Domain and state"]
  node_models["Domain models"]
  node_document_model["Document model<br/>[Document.ts]"]
  node_user_model["User model<br/>[User.ts]"]
  node_oauth_model["OAuth client model<br/>[OAuthClient.ts]"]
  node_oauth_store["OAuth client state"]
  node_store_layer["Client stores"]
end

subgraph group_platform["Server platform"]
  node_api["HTTP API<br/>[app.ts]"]
  node_file_storage["File storage<br/>[BaseStorage.ts]"]
  node_s3_storage[("S3 storage<br/>[S3Storage.ts]")]
end

subgraph group_extensions["Integrations"]
  node_server_plugins["Server plugin manager<br/>[PluginManager.ts]"]
  node_client_plugins["Client plugin manager<br/>[PluginManager.ts]"]
  node_webhooks["Webhook delivery"]
  node_oidc["OIDC sign-in<br/>[oidcRouter.ts]"]
end

node_user(("Team member"))

node_user -.->|"uses"| node_routes
node_routes -.->|"routes"| node_home
node_home -.->|"opens"| node_search
node_home -.->|"navigates"| node_collection
node_collection -.->|"opens"| node_document
node_document -.->|"edits with"| node_editor
node_editor -->|"configures"| node_editor_extensions
node_document -.->|"presents"| node_comments
node_document -.->|"offers"| node_sharing
node_user -.->|"manages workspace"| node_settings
node_user_model -->|"references"| node_document_model
node_oauth_store -->|"stores"| node_oauth_model
node_store_layer -.->|"tracks"| node_document_model
node_search -.->|"queries"| node_api
node_document -.->|"requests data"| node_api
node_api -.->|"handles files"| node_file_storage
node_s3_storage -->|"implements"| node_file_storage
node_server_plugins -.->|"loads plugin"| node_webhooks
node_server_plugins -.->|"loads plugin"| node_oidc
node_client_plugins -.->|"extends"| node_settings

click node_routes "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/routes/index.tsx"
click node_home "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Home.tsx"
click node_search "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Search/Search.tsx"
click node_collection "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Collection/index.tsx"
click node_document "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Document/index.tsx"
click node_editor "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/editor/index.tsx"
click node_editor_extensions "https://github.com/dkyr-g1thu6/outline_repo/blob/main/shared/editor/lib/ExtensionManager.ts"
click node_comments "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Document/components/Comments/Comments.tsx"
click node_sharing "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/components/Sharing/Document/index.tsx"
click node_settings "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Settings/Application.tsx"
click node_models "https://github.com/dkyr-g1thu6/outline_repo/tree/main/app/models"
click node_document_model "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/models/Document.ts"
click node_user_model "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/models/User.ts"
click node_oauth_model "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/models/oauth/OAuthClient.ts"
click node_oauth_store "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/stores/OAuthClientsStore.ts"
click node_store_layer "https://github.com/dkyr-g1thu6/outline_repo/tree/main/app/stores"
click node_api "https://github.com/dkyr-g1thu6/outline_repo/blob/main/server/routes/app.ts"
click node_file_storage "https://github.com/dkyr-g1thu6/outline_repo/blob/main/server/storage/files/BaseStorage.ts"
click node_s3_storage "https://github.com/dkyr-g1thu6/outline_repo/blob/main/server/storage/files/S3Storage.ts"
click node_server_plugins "https://github.com/dkyr-g1thu6/outline_repo/blob/main/server/utils/PluginManager.ts"
click node_client_plugins "https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/utils/PluginManager.ts"
click node_webhooks "https://github.com/dkyr-g1thu6/outline_repo/blob/main/plugins/webhooks/server/tasks/DeliverWebhookTask.ts"
click node_oidc "https://github.com/dkyr-g1thu6/outline_repo/blob/main/plugins/oidc/server/auth/oidcRouter.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_routes,node_home,node_search,node_settings toneBlue
class node_collection,node_document,node_editor,node_editor_extensions,node_comments,node_sharing toneAmber
class node_models,node_document_model,node_user_model,node_oauth_model,node_oauth_store,node_store_layer toneMint
class node_api,node_file_storage,node_s3_storage toneRose
class node_server_plugins,node_client_plugins,node_webhooks,node_oidc,node_user toneIndigo
```

## Components

### Client experience

- [App routing](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/routes/index.tsx): `app/routes/index.tsx`
- [Workspace navigation](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Home.tsx): `app/scenes/Home.tsx`
- [Search](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Search/Search.tsx): `app/scenes/Search/Search.tsx`
- [Workspace settings](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Settings/Application.tsx): `app/scenes/Settings/Application.tsx`

### Content and collaboration

- [Collections](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Collection/index.tsx): `app/scenes/Collection/index.tsx`
- [Document workflow](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Document/index.tsx): `app/scenes/Document/index.tsx`
- [Document editor](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/editor/index.tsx): `app/editor/index.tsx`
- [Editor extensions](https://github.com/dkyr-g1thu6/outline_repo/blob/main/shared/editor/lib/ExtensionManager.ts): `shared/editor/lib/ExtensionManager.ts`
- [Comments](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/scenes/Document/components/Comments/Comments.tsx): `app/scenes/Document/components/Comments/Comments.tsx`
- [Sharing controls](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/components/Sharing/Document/index.tsx): `app/components/Sharing/Document/index.tsx`

### Domain and state

- [Domain models](https://github.com/dkyr-g1thu6/outline_repo/tree/main/app/models): `app/models`
- [Document model](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/models/Document.ts): `app/models/Document.ts`
- [User model](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/models/User.ts): `app/models/User.ts`
- [OAuth client model](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/models/oauth/OAuthClient.ts): `app/models/oauth/OAuthClient.ts`
- [OAuth client state](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/stores/OAuthClientsStore.ts): `app/stores/OAuthClientsStore.ts`
- [Client stores](https://github.com/dkyr-g1thu6/outline_repo/tree/main/app/stores): `app/stores`

### Server platform

- [HTTP API](https://github.com/dkyr-g1thu6/outline_repo/blob/main/server/routes/app.ts): `server/routes/app.ts`
- [File storage](https://github.com/dkyr-g1thu6/outline_repo/blob/main/server/storage/files/BaseStorage.ts): `server/storage/files/BaseStorage.ts`
- [S3 storage](https://github.com/dkyr-g1thu6/outline_repo/blob/main/server/storage/files/S3Storage.ts): `server/storage/files/S3Storage.ts`

### Integrations

- [Server plugin manager](https://github.com/dkyr-g1thu6/outline_repo/blob/main/server/utils/PluginManager.ts): `server/utils/PluginManager.ts`
- [Client plugin manager](https://github.com/dkyr-g1thu6/outline_repo/blob/main/app/utils/PluginManager.ts): `app/utils/PluginManager.ts`
- [Webhook delivery](https://github.com/dkyr-g1thu6/outline_repo/blob/main/plugins/webhooks/server/tasks/DeliverWebhookTask.ts): `plugins/webhooks/server/tasks/DeliverWebhookTask.ts`
- [OIDC sign-in](https://github.com/dkyr-g1thu6/outline_repo/blob/main/plugins/oidc/server/auth/oidcRouter.ts): `plugins/oidc/server/auth/oidcRouter.ts`

### Other components

- **Team member**

## Connections

- Team member → App routing: uses
- App routing → Workspace navigation: routes
- Workspace navigation → Search: opens
- Workspace navigation → Collections: navigates
- Collections → Document workflow: opens
- Document workflow → Document editor: edits with
- Document editor → Editor extensions: configures (evidence: `shared/editor/lib/ExtensionManager.ts`)
- Document workflow → Comments: presents
- Document workflow → Sharing controls: offers
- Team member → Workspace settings: manages workspace
- User model → Document model: references (evidence: `app/models/User.ts`)
- OAuth client state → OAuth client model: stores (evidence: `app/stores/OAuthClientsStore.ts`)
- Client stores → Document model: tracks
- Search → HTTP API: queries
- Document workflow → HTTP API: requests data
- HTTP API → File storage: handles files
- S3 storage → File storage: implements (evidence: `server/storage/files/S3Storage.ts`)
- Server plugin manager → Webhook delivery: loads plugin
- Server plugin manager → OIDC sign-in: loads plugin
- Client plugin manager → Workspace settings: extends
