mirror of
https://github.com/lobehub/lobehub.git
synced 2026-03-26 13:19:34 +07:00
121 lines
3.8 KiB
Plaintext
121 lines
3.8 KiB
Plaintext
---
|
|
description: Project directory structure overview
|
|
alwaysApply: false
|
|
---
|
|
|
|
# LobeChat Project Structure
|
|
|
|
note: some not very important files are not shown for simplicity.
|
|
|
|
## Complete Project Structure
|
|
|
|
this project use common monorepo structure. The workspace packages name use `@lobechat/` namespace.
|
|
|
|
```plaintext
|
|
lobe-chat/
|
|
├── apps/
|
|
│ └── desktop/
|
|
├── docs/
|
|
├── locales/
|
|
│ ├── en-US/
|
|
│ └── zh-CN/
|
|
├── packages/
|
|
│ ├── const/
|
|
│ ├── context-engine/
|
|
│ ├── database/
|
|
│ │ ├── src/
|
|
│ │ │ ├── models/
|
|
│ │ │ ├── schemas/
|
|
│ │ │ └── repositories/
|
|
│ ├── model-bank/
|
|
│ ├── model-runtime/
|
|
│ │ └── src/
|
|
│ │ ├── openai/
|
|
│ │ └── anthropic/
|
|
│ ├── types/
|
|
│ │ └── src/
|
|
│ │ ├── message/
|
|
│ │ └── user/
|
|
│ └── utils/
|
|
├── public/
|
|
├── scripts/
|
|
├── src/
|
|
│ ├── app/
|
|
│ │ ├── (backend)/
|
|
│ │ │ ├── api/
|
|
│ │ │ │ ├── auth/
|
|
│ │ │ │ └── webhooks/
|
|
│ │ │ ├── middleware/
|
|
│ │ │ ├── oidc/
|
|
│ │ │ ├── trpc/
|
|
│ │ │ └── webapi/
|
|
│ │ │ ├── chat/
|
|
│ │ │ └── tts/
|
|
│ │ ├── [variants]/
|
|
│ │ │ ├── (main)/
|
|
│ │ │ │ ├── chat/
|
|
│ │ │ │ └── settings/
|
|
│ │ │ └── @modal/
|
|
│ │ └── manifest.ts
|
|
│ ├── components/
|
|
│ ├── config/
|
|
│ ├── features/
|
|
│ │ └── ChatInput/
|
|
│ ├── hooks/
|
|
│ ├── layout/
|
|
│ │ ├── AuthProvider/
|
|
│ │ └── GlobalProvider/
|
|
│ ├── libs/
|
|
│ │ └── oidc-provider/
|
|
│ ├── locales/
|
|
│ │ └── default/
|
|
│ ├── server/
|
|
│ │ ├── modules/
|
|
│ │ ├── routers/
|
|
│ │ │ ├── async/
|
|
│ │ │ ├── desktop/
|
|
│ │ │ ├── edge/
|
|
│ │ │ └── lambda/
|
|
│ │ └── services/
|
|
│ ├── services/
|
|
│ │ ├── user/
|
|
│ │ │ ├── client.ts
|
|
│ │ │ └── server.ts
|
|
│ │ └── message/
|
|
│ ├── store/
|
|
│ │ ├── agent/
|
|
│ │ ├── chat/
|
|
│ │ └── user/
|
|
│ ├── styles/
|
|
│ └── utils/
|
|
└── package.json
|
|
```
|
|
|
|
## Architecture Map
|
|
|
|
- UI Components: `src/components`, `src/features`
|
|
- Global providers: `src/layout`
|
|
- Zustand stores: `src/store`
|
|
- Client Services: `src/services/`
|
|
- clientDB: `src/services/<domain>/client.ts`
|
|
- serverDB: `src/services/<domain>/server.ts`
|
|
- API Routers:
|
|
- `src/app/(backend)/webapi` (REST)
|
|
- `src/server/routers/{edge|lambda|async|desktop|tools}` (tRPC)
|
|
- Server:
|
|
- Services(can access serverDB): `src/server/services`
|
|
- Modules(can't access db): `src/server/modules` (Server only Third-party Service Module)
|
|
- Database:
|
|
- Schema (Drizzle): `packages/database/src/schemas`
|
|
- Model (CRUD): `packages/database/src/models`
|
|
- Repository (bff-queries): `packages/database/src/repositories`
|
|
- Third-party Integrations: `src/libs` — analytics, oidc etc.
|
|
|
|
## Data Flow Architecture
|
|
|
|
- **Browser/PWA**: React UI → Client Service → Direct Model Access → PGLite (Web WASM)
|
|
- **Server**: React UI → Client Service → tRPC Lambda → Server Services → PostgreSQL (Remote)
|
|
- **Desktop**:
|
|
- Cloud sync disabled: Electron UI → Client Service → tRPC Lambda → Local Server Services → PGLite (Node WASM)
|
|
- Cloud sync enabled: Electron UI → Client Service → tRPC Lambda → Cloud Server Services → PostgreSQL (Remote)
|