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

프로젝트 아키텍처

LibreChat의 모노레포 워크스페이스 구조 및 패키지 경계 개요.

Monorepo 구조

LibreChat은 명확하게 정의된 워크스페이스 경계를 가진 모노레포(monorepo)로 구성되어 있습니다:

작업 공간언어측면의존성목적
/apiJS (레거시)백엔드packages/api, packages/data-schemas, packages/data-provider, @librechat/agentsExpress 서버 — 변경 사항 최소화
/packages/apiTypeScript백엔드packages/data-schemas, packages/data-provider새로운 백엔드 코드가 위치함 (TS 전용, /api에서 사용)
/packages/data-schemasTypeScript백엔드packages/data-provider데이터베이스 모델/스키마, 백엔드 프로젝트 간 공유 가능
/packages/data-providerTypeScript공유공유 API 타입, endpoint, 데이터 서비스 — 프론트엔드와 백엔드 모두에서 사용
/clientTypeScript/React프론트엔드packages/data-provider, packages/client프론트엔드 SPA
/packages/clientTypeScript프론트엔드packages/data-provider공유 프론트엔드 유틸리티

주요 원칙

  • /packages/api 내의 모든 신규 백엔드 코드는 반드시 TypeScript여야 합니다.
  • /api 변경 사항을 최소한으로 유지하세요. /packages/api를 호출하는 얇은 JS 래퍼(thin JS wrappers) 형태여야 합니다.
  • 데이터베이스 관련 공유 로직은 /packages/data-schemas에 위치해야 합니다.
  • 프론트엔드/백엔드 공유 API 로직(endpoints, types, data-service)은 /packages/data-provider에 위치합니다.

빌드 및 설치

명령어목적
npm run smart-reinstall의존성 설치(lockfile 변경 시) + Turborepo를 통한 빌드
npm run reinstallNode/npm 버전 변경 후 또는 의존성 상태가 의심될 때 클린 설치
npm run buildTurborepo를 통해 모든 컴파일된 코드 빌드 (병렬, 캐시됨)
npm run frontend모든 컴파일된 코드를 순차적으로 빌드 (레거시 대체 방식)
npm run build:data-provider변경 사항 적용 후 packages/data-provider 재빌드
npm run backend백엔드 서버 시작
npm run backend:dev파일 감시 모드로 백엔드 시작 (개발용)
npm run frontend:devHMR이 포함된 프론트엔드 개발 서버 시작 (포트 3090, 백엔드 실행 필요)
  • Node.js: v24.16.0
  • npm: v11.16.0
  • 데이터베이스: MongoDB
  • 백엔드는 http://localhost:3080/에서, 프론트엔드 개발 서버는 http://localhost:3090/에서 실행됩니다.

참고

전체 코딩 표준 및 관례에 대한 자세한 내용은 Code Standards and Conventions를 참조하세요.

이 가이드는 어떤가요?