본문으로 건너뛰기

모노레포 구조

이 문서로 해결할 질문

  • 패키지별 역할과 의존 방향은 무엇인가요?
  • 루트에서 자주 쓰는 명령은 무엇인가요?

디렉터리 구조

mealio/
├── client/ # @mealio/client — Next.js
├── server/
│ ├── producer/ # @mealio/producer — NestJS API
│ ├── consumer/ # @mealio/consumer — Kafka 워커
│ └── shared/ # @mealio/shared — 공용 라이브러리
├── docs/ # mealio-docs — Docusaurus
├── docker/ # Compose·Dockerfile
├── observability/ # Grafana provisioning 등
└── package.json # 루트 워크스페이스 스크립트

패키지 의존 방향

  • clientproducer를 HTTP로 호출합니다.
  • producerconsumer@mealio/shared를 import합니다.
  • producerconsumer직접 import하지 않으며, Kafka 계약으로만 통신합니다.

워크스페이스

pnpm-workspace.yaml:

packages:
- client
- docs
- server/shared
- server/producer
- server/consumer

루트 스크립트

명령설명
pnpm run start:clientNext.js dev
pnpm run start:producerNestJS API dev
pnpm run start:consumerConsumer dev
pnpm run start:docsDocusaurus dev
pnpm run db:prisma:migrate:devPrisma 마이그레이션
pnpm run ciinstall + build + lint + test

shared 패키지 범위

제공경로 예
Prisma client@mealio/shared/prisma-client
Mongoose schemasserver/shared/.../database/mongoose/
Kafka 상수server/shared/.../kafka-topics.ts
Redis 키server/shared/.../cache-keys.ts
이벤트 타입server/shared/.../types/events/

Shared 패키지 개요

CI

pnpm run ci는 client·producer·consumer의 lint·test와 shared·앱 빌드를 실행합니다.

GitHub Actions 워크플로는 .github/workflows/에 정의되어 있습니다.

관련 문서