Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

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 roboczyJęzykStronaZależnośćPrzeznaczenie
/apiJS (starszy)Backendpackages/api, packages/data-schemas, packages/data-provider, @librechat/agentsSerwer Express — ogranicz zmiany w tym miejscu
/packages/apiTypeScriptBackendpackages/data-schemas, packages/data-providerNowy kod backendu znajduje się tutaj (tylko TS, wykorzystywany przez /api)
/packages/data-schemasTypeScriptBackendpackages/data-providerModele/schematy bazy danych, współdzielone między projektami backendowymi
/packages/data-providerTypeScriptWspółdzielonyWspółdzielone typy API, endpointy, data-service — używane zarówno przez frontend, jak i backend
/clientTypeScript/ReactFrontendpackages/data-provider, packages/clientFrontend SPA
/packages/clientTypeScriptFrontendpackages/data-providerWspółdzielone narzędzia frontendowe

Kluczowe zasady

  • Cały nowy kod backendowy musi być w TypeScript w /packages/api.
  • Ogranicz zmiany w /api do 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

PolecenieCel
npm run smart-reinstallInstalacja zależności (jeśli plik blokady uległ zmianie) + budowanie przez Turborepo
npm run reinstallCzysta instalacja po zmianie wersji Node/npm lub gdy stan zależności jest niepewny
npm run buildBudowanie całego skompilowanego kodu przez Turborepo (równolegle, z pamięcią podręczną)
npm run frontendBudowanie całego skompilowanego kodu sekwencyjnie (starsza metoda awaryjna)
npm run build:data-providerPrzebudowanie packages/data-provider po wprowadzeniu zmian
npm run backendUruchomienie serwera backendu
npm run backend:devUruchomienie backendu z obserwacją plików (deweloperskie)
npm run frontend:devUruchomienie 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 na http://localhost:3090/

Uwaga

Pełny zestaw standardów i konwencji kodowania znajduje się w Code Standards and Conventions.

Jaka jest ta instrukcja?