Arquitetura do Projeto
Visão geral da estrutura do workspace monorepo do LibreChat e dos limites dos pacotes.
Estrutura do Monorepo
O LibreChat é organizado como um monorepo com limites de workspace claramente definidos:
| Workspace | Language | Side | Dependency | Purpose |
|---|---|---|---|---|
/api | JS (legacy) | Backend | packages/api, packages/data-schemas, packages/data-provider, @librechat/agents | Servidor Express — minimize alterações aqui |
/packages/api | TypeScript | Backend | packages/data-schemas, packages/data-provider | Novo código de backend reside aqui (apenas TS, consumido pelo /api) |
/packages/data-schemas | TypeScript | Backend | packages/data-provider | Modelos/schemas de banco de dados, compartilháveis entre projetos de backend |
/packages/data-provider | TypeScript | Shared | — | Tipos de API compartilhados, endpoints, data-service — usados tanto pelo frontend quanto pelo backend |
/client | TypeScript/React | Frontend | packages/data-provider, packages/client | SPA de frontend |
/packages/client | TypeScript | Frontend | packages/data-provider | Utilitários de frontend compartilhados |
Princípios Fundamentais
- Todo novo código de backend deve ser em TypeScript em
/packages/api. - Mantenha as alterações em
/apino mínimo absoluto — wrappers JS simples chamando/packages/api. - A lógica compartilhada específica do banco de dados pertence a
/packages/data-schemas. - A lógica de API compartilhada entre frontend/backend (endpoints, types, data-service) pertence a
/packages/data-provider.
Build e Instalação
| Comando | Objetivo |
|---|---|
npm run smart-reinstall | Instala dependências (se o lockfile mudou) + compila via Turborepo |
npm run reinstall | Instalação limpa após alterar versões do Node/npm ou quando o estado das dependências estiver suspeito |
npm run build | Compila todo o código via Turborepo (paralelo, em cache) |
npm run frontend | Compila todo o código sequencialmente (fallback legado) |
npm run build:data-provider | Recompila packages/data-provider após alterações |
npm run backend | Inicia o servidor backend |
npm run backend:dev | Inicia o backend com monitoramento de arquivos (desenvolvimento) |
npm run frontend:dev | Inicia o servidor de desenvolvimento do frontend com HMR (porta 3090, requer o backend em execução) |
- Node.js:
v24.16.0 - npm:
v11.16.0 - Banco de dados: MongoDB
- O backend roda em
http://localhost:3080/; o servidor de desenvolvimento do frontend emhttp://localhost:3090/
Nota
Para o conjunto completo de padrões e convenções de codificação, veja Code Standards and Conventions.
Como está este guia?