コンテンツにスキップ

ADR-0002 モノレポと技術スタック

  • ステータス: 採用
  • 日付: 2026-06-20

背景

e コマース事業者向け SaaS を、将来スケールしても破綻しない構成で立ち上げたい。 フロント・API・インフラ・ドキュメントを一貫した型安全な TypeScript で扱いたい。

決定

  • モノレポ: pnpm workspaces + Turborepo。
  • フロント: Next.js 15 (App Router) + React 19 + Tailwind + shadcn/ui。
  • API: NestJS 11。
  • DB: Drizzle ORM + PostgreSQL(AWS RDS)。マルチテナントは 共有DB + tenant_id 行分離 + RLS(ADR-0003)。
  • 型共有: Zod スキーマを @repo/contracts に集約し Web/API で共有。
  • IaC: Pulumi (TypeScript)。

内部共有パッケージはコンパイル方式

@repo/* は CommonJS で dist にビルドし main/types/exports を備える。 NestJS (commonjs + classic node 解決) は exports のみのソース直消費を解決 できないため。Next は bundler 解決で問題ない。新しい共有パッケージも同方式に揃える。

影響

  • apps → packages の一方向依存を維持する。
  • 新しい共有パッケージはコンパイル方式(dist 出力)で作る。