Files
gongxue-base/openspec/specs/monorepo-structure/spec.md

2.2 KiB

monorepo-structure Specification

Purpose

TBD - created by archiving change migrate-to-turborepo. Update Purpose after archive.

Requirements

Requirement: Monorepo directory structure

The project SHALL adopt the Turborepo-recommended directory structure with apps/ for applications and packages/ for shared libraries.

Scenario: Directory layout exists

  • WHEN a developer clones the repository
  • THEN the root directory contains apps/server/, apps/admin/, and packages/typescript-config/ as npm workspace packages

Scenario: Legacy paths removed

  • WHEN the migration is complete
  • THEN top-level backend/ (moved to apps/server/) and frontend/ (moved to apps/admin/) directories no longer exist

Requirement: npm workspaces configuration

The root package.json SHALL declare workspaces field listing all app and package directories, enabling unified dependency management via npm.

Scenario: Install from root

  • WHEN npm install is run at the project root
  • THEN dependencies for all workspaces are installed and hoisted to root node_modules/

Scenario: Workspace-scoped scripts

  • WHEN npm run test --workspace=apps/server is executed
  • THEN only the backend test suite runs

Requirement: Shared TypeScript configuration

The project SHALL provide shared TypeScript configuration presets via packages/typescript-config/, including base.json, nestjs.json, and react-vite.json.

Scenario: Server inherits NestJS preset

  • WHEN apps/server/tsconfig.json is read
  • THEN it extends @gongxue/typescript-config/nestjs.json

Scenario: Admin inherits React preset

  • WHEN apps/admin/tsconfig.json is read
  • THEN it extends @gongxue/typescript-config/react-vite.json

Requirement: Docker Compose path compatibility

The docker-compose.yml SHALL reference build contexts using the new apps/ paths, and all services MUST build and start successfully.

Scenario: Docker compose build succeeds

  • WHEN docker compose build is executed
  • THEN server and admin images build without errors

Scenario: Docker compose up succeeds

  • WHEN docker compose up is executed
  • THEN all services (MySQL, server, admin) start and respond to requests