Architektura projektu
Przegląd struktury obszaru roboczego monorepo LibreChat oraz granic pakietów.
Struktura Monorepo
LibreChat jest zorganizowany jako monorepo z wyraźnie określonymi granicami obszarów roboczych:
| Obszar roboczy | Język | Strona | Zależność | Przeznaczenie |
|---|---|---|---|---|
/api | JS (starszy) | Backend | packages/api, packages/data-schemas, packages/data-provider, @librechat/agents | Serwer Express — ogranicz zmiany w tym miejscu |
/packages/api | TypeScript | Backend | packages/data-schemas, packages/data-provider | Nowy kod backendu znajduje się tutaj (tylko TS, wykorzystywany przez /api) |
/packages/data-schemas | TypeScript | Backend | packages/data-provider | Modele/schematy bazy danych, współdzielone między projektami backendowymi |
/packages/data-provider | TypeScript | Współdzielony | — | Współdzielone typy API, endpointy, data-service — używane zarówno przez frontend, jak i backend |
/client | TypeScript/React | Frontend | packages/data-provider, packages/client | Frontend SPA |
/packages/client | TypeScript | Frontend | packages/data-provider | Współdzielone narzędzia frontendowe |
Kluczowe zasady
- Cały nowy kod backendowy musi być w TypeScript w
/packages/api. - Ogranicz zmiany w
/apido absolutnego minimum — używaj lekkich wrapperów JS wywołujących/packages/api. - Logika współdzielona specyficzna dla bazy danych znajduje się w
/packages/data-schemas. - Wspólna logika API dla frontend/backend (endpointy, typy, data-service) znajduje się w
/packages/data-provider.
Budowanie i instalacja
| Polecenie | Cel |
|---|---|
npm run smart-reinstall | Instalacja zależności (jeśli plik blokady uległ zmianie) + budowanie przez Turborepo |
npm run reinstall | Czysta instalacja po zmianie wersji Node/npm lub gdy stan zależności jest niepewny |
npm run build | Budowanie całego skompilowanego kodu przez Turborepo (równolegle, z pamięcią podręczną) |
npm run frontend | Budowanie całego skompilowanego kodu sekwencyjnie (starsza metoda awaryjna) |
npm run build:data-provider | Przebudowanie packages/data-provider po wprowadzeniu zmian |
npm run backend | Uruchomienie serwera backendu |
npm run backend:dev | Uruchomienie backendu z obserwacją plików (deweloperskie) |
npm run frontend:dev | Uruchomienie serwera deweloperskiego frontendu z HMR (port 3090, wymaga uruchomionego backendu) |
- Node.js:
v24.16.0 - npm:
v11.16.0 - Baza danych: MongoDB
- Backend działa na
http://localhost:3080/; serwer deweloperski frontend nahttp://localhost:3090/
Uwaga
Pełny zestaw standardów i konwencji kodowania znajduje się w Code Standards and Conventions.
Jaka jest ta instrukcja?