forked from wangziqi/gongxue-base
chore: archive rbac-refactor — spec merge, design doc annotation, move to archive
This commit is contained in:
49
openspec/specs/monorepo-structure/spec.md
Normal file
49
openspec/specs/monorepo-structure/spec.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user