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:
| Workspace | Language | Side | Dependency | Purpose |
|---|---|---|---|---|
/api | JS (legacy) | Backend | packages/api, packages/data-schemas, packages/data-provider, @librechat/agents | Servidor Express — minimizar cambios aquí |
/packages/api | TypeScript | Backend | packages/data-schemas, packages/data-provider | El nuevo código de backend reside aquí (solo TS, consumido por /api) |
/packages/data-schemas | TypeScript | Backend | packages/data-provider | Modelos/esquemas de base de datos, compartibles entre proyectos de backend |
/packages/data-provider | TypeScript | Shared | — | Tipos de API compartidos, endpoints, data-service — utilizados tanto por el frontend como por el backend |
/client | TypeScript/React | Frontend | packages/data-provider, packages/client | SPA de frontend |
/packages/client | TypeScript | Frontend | packages/data-provider | Utilidades de frontend compartidas |
Principios clave
- Todo el código nuevo del backend debe estar en TypeScript en
/packages/api. - Mantén los cambios en
/apial 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
| Comando | Propósito |
|---|---|
npm run smart-reinstall | Instalar dependencias (si el archivo de bloqueo cambió) + compilar mediante Turborepo |
npm run reinstall | Instalación limpia después de cambiar versiones de Node/npm o cuando el estado de las dependencias es sospechoso |
npm run build | Compilar todo el código mediante Turborepo (paralelo, en caché) |
npm run frontend | Compilar todo el código secuencialmente (alternativa heredada) |
npm run build:data-provider | Recompilar packages/data-provider después de realizar cambios |
npm run backend | Iniciar el servidor backend |
npm run backend:dev | Iniciar el backend con monitoreo de archivos (desarrollo) |
npm run frontend:dev | Iniciar 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 enhttp://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?