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

Arquitectura del proyecto

Descripción general de la estructura del espacio de trabajo monorepo de LibreChat y los límites de los paquetes.

Estructura del Monorepo

LibreChat está organizado como un monorepo con límites de espacio de trabajo claramente definidos:

WorkspaceLanguageSideDependencyPurpose
/apiJS (legacy)Backendpackages/api, packages/data-schemas, packages/data-provider, @librechat/agentsServidor Express — minimizar cambios aquí
/packages/apiTypeScriptBackendpackages/data-schemas, packages/data-providerEl nuevo código de backend reside aquí (solo TS, consumido por /api)
/packages/data-schemasTypeScriptBackendpackages/data-providerModelos/esquemas de base de datos, compartibles entre proyectos de backend
/packages/data-providerTypeScriptSharedTipos de API compartidos, endpoints, data-service — utilizados tanto por el frontend como por el backend
/clientTypeScript/ReactFrontendpackages/data-provider, packages/clientSPA de frontend
/packages/clientTypeScriptFrontendpackages/data-providerUtilidades de frontend compartidas

Principios clave

  • Todo el código nuevo del backend debe estar en TypeScript en /packages/api.
  • Mantén los cambios en /api al mínimo absoluto: envoltorios delgados de JS que llaman a /packages/api.
  • La lógica compartida específica de la base de datos pertenece a /packages/data-schemas.
  • La lógica de API compartida entre el frontend y el backend (endpoints, tipos, data-service) pertenece a /packages/data-provider.

Construcción e instalación

ComandoPropósito
npm run smart-reinstallInstalar dependencias (si el archivo de bloqueo cambió) + compilar mediante Turborepo
npm run reinstallInstalación limpia después de cambiar versiones de Node/npm o cuando el estado de las dependencias es sospechoso
npm run buildCompilar todo el código mediante Turborepo (paralelo, en caché)
npm run frontendCompilar todo el código secuencialmente (alternativa heredada)
npm run build:data-providerRecompilar packages/data-provider después de realizar cambios
npm run backendIniciar el servidor backend
npm run backend:devIniciar el backend con monitoreo de archivos (desarrollo)
npm run frontend:devIniciar el servidor de desarrollo frontend con HMR (puerto 3090, requiere que el backend esté ejecutándose)
  • Node.js: v24.16.0
  • npm: v11.16.0
  • Base de datos: MongoDB
  • El backend se ejecuta en http://localhost:3080/; el servidor de desarrollo del frontend en http://localhost:3090/

Nota

Para ver el conjunto completo de estándares y convenciones de codificación, consulte Code Standards and Conventions.

¿Qué te parece esta guía?