# qinjunhaocn/openlist-worker architecture

> Architecture diagram of the GitHub repository qinjunhaocn/openlist-worker, 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/qinjunhaocn/openlist-worker
- Repository: https://github.com/qinjunhaocn/openlist-worker

## Overview

OpenList-Worker is a serverless, multi-storage file listing and management service. A user request enters the Worker, is routed to filesystem operations, resolves a virtual path and configured storage, then uses a provider driver to list or transfer files. The README also documents sharing, search, background tasks, authentication, and WebDAV/S3/MCP interfaces. Storage configuration and application data use a pluggable persistence layer. The workflow follows the documented product structure; some feature-to-operation wiring is not shown in the sampled source.

Main entry points: [`src/backend/server/router.ts`](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/router.ts) (API router), [`src/backend/index.ts`](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/index.ts) (HTTP app), [`src/backend/internal/op/storage.ts`](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/internal/op/storage.ts) (Storage operations), [`src/backend/drivers`](https://github.com/qinjunhaocn/openlist-worker/tree/main/src/backend/drivers) (Storage drivers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Request runtime"]
  node_worker["Worker entry<br/>[worker.ts]"]
  node_app["HTTP app<br/>[index.ts]"]
  node_router["API router<br/>[router.ts]"]
end

subgraph group_files["File operations"]
  node_fs["File API<br/>[fs.ts]"]
  node_storageop["Storage operations<br/>[storage.ts]"]
  node_share["Sharing<br/>[share.ts]"]
  node_search["File search<br/>[search.ts]"]
end

subgraph group_providers["Storage providers"]
  node_driverbase["Driver interface<br/>[base.ts]"]
  node_drivers{{"Storage drivers"}}
end

subgraph group_services["Product services"]
  node_tasks["Async tasks<br/>[task.ts]"]
  node_webdav["WebDAV interface<br/>[webdav.ts]"]
  node_s3api["S3 interface<br/>[s3.ts]"]
  node_mcp["MCP interface<br/>[mcp.ts]"]
  node_auth["Authentication<br/>[auth.ts]"]
end

subgraph group_persistence["Persistence"]
  node_dbmodel["Data model<br/>[db.ts]"]
  node_storebackend["Store selection<br/>[backend.ts]"]
  node_store[("Database adapters")]
end

node_user(("User"))
node_remote[("External stores")]

node_user -->|"sends request"| node_worker
node_worker -->|"serves"| node_app
node_app -->|"mounts API"| node_router
node_router -->|"routes file requests"| node_fs
node_fs -->|"performs file operations"| node_storageop
node_storageop -->|"resolves storage path"| node_dbmodel
node_storageop -->|"dispatches provider operations"| node_drivers
node_drivers -->|"implement interface"| node_driverbase
node_drivers -->|"reads and writes files"| node_remote
node_router -->|"routes sharing requests"| node_share
node_router -->|"exposes search"| node_search
node_router -->|"routes task requests"| node_tasks
node_app -->|"mounts interface"| node_webdav
node_app -->|"mounts interface"| node_s3api
node_router -->|"exposes MCP"| node_mcp
node_router -->|"routes authentication"| node_auth
node_app -->|"sets persistence context"| node_dbmodel
node_dbmodel -->|"loads and saves data"| node_storebackend
node_storebackend -->|"selects adapter"| node_store

click node_worker "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/worker.ts"
click node_app "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/index.ts"
click node_router "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/router.ts"
click node_fs "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/fs.ts"
click node_storageop "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/internal/op/storage.ts"
click node_driverbase "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/internal/driver/base.ts"
click node_drivers "https://github.com/qinjunhaocn/openlist-worker/tree/main/src/backend/drivers"
click node_share "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/share.ts"
click node_search "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/internal/op/search.ts"
click node_tasks "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/task.ts"
click node_webdav "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/webdav.ts"
click node_s3api "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/s3.ts"
click node_mcp "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/mcp.ts"
click node_auth "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/auth.ts"
click node_dbmodel "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/internal/model/db.ts"
click node_storebackend "https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/internal/model/store/backend.ts"
click node_store "https://github.com/qinjunhaocn/openlist-worker/tree/main/src/backend/internal/model/store/driver"

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_worker,node_app,node_router,node_user toneBlue
class node_fs,node_storageop,node_share,node_search,node_remote toneAmber
class node_driverbase,node_drivers toneMint
class node_tasks,node_webdav,node_s3api,node_mcp,node_auth toneRose
class node_dbmodel,node_storebackend,node_store toneIndigo
```

## Components

### Request runtime

- [Worker entry](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/worker.ts): `src/backend/worker.ts`
- [HTTP app](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/index.ts): `src/backend/index.ts`
- [API router](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/router.ts): `src/backend/server/router.ts`

### File operations

- [File API](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/fs.ts): `src/backend/server/fs.ts`
- [Storage operations](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/internal/op/storage.ts): `src/backend/internal/op/storage.ts`
- [Sharing](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/share.ts): `src/backend/server/share.ts`
- [File search](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/internal/op/search.ts): `src/backend/internal/op/search.ts`

### Storage providers

- [Driver interface](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/internal/driver/base.ts): `src/backend/internal/driver/base.ts`
- [Storage drivers](https://github.com/qinjunhaocn/openlist-worker/tree/main/src/backend/drivers): `src/backend/drivers`

### Product services

- [Async tasks](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/task.ts): `src/backend/server/task.ts`
- [WebDAV interface](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/webdav.ts): `src/backend/server/webdav.ts`
- [S3 interface](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/s3.ts): `src/backend/server/s3.ts`
- [MCP interface](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/mcp.ts): `src/backend/server/mcp.ts`
- [Authentication](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/server/auth.ts): `src/backend/server/auth.ts`

### Persistence

- [Data model](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/internal/model/db.ts): `src/backend/internal/model/db.ts`
- [Store selection](https://github.com/qinjunhaocn/openlist-worker/blob/main/src/backend/internal/model/store/backend.ts): `src/backend/internal/model/store/backend.ts`
- [Database adapters](https://github.com/qinjunhaocn/openlist-worker/tree/main/src/backend/internal/model/store/driver): `src/backend/internal/model/store/driver`

### Other components

- **User**
- **External stores**

## Connections

- User → Worker entry: sends request
- Worker entry → HTTP app: serves
- HTTP app → API router: mounts API
- API router → File API: routes file requests
- File API → Storage operations: performs file operations
- Storage operations → Data model: resolves storage path
- Storage operations → Storage drivers: dispatches provider operations
- Storage drivers → Driver interface: implement interface
- Storage drivers → External stores: reads and writes files
- API router → Sharing: routes sharing requests
- API router → File search: exposes search
- API router → Async tasks: routes task requests
- HTTP app → WebDAV interface: mounts interface
- HTTP app → S3 interface: mounts interface
- API router → MCP interface: exposes MCP
- API router → Authentication: routes authentication
- HTTP app → Data model: sets persistence context
- Data model → Store selection: loads and saves data
- Store selection → Database adapters: selects adapter
