- Move cross-cutting docs (personas, design system, implementation phases, Ideen.md) to .specify/memory/ - Move cross-cutting research and plans to .specify/memory/research/ and .specify/memory/plans/ - Extract 5 setup tasks from spec/setup-tasks.md into individual specs/001-005/spec.md files with spec-kit template format - Extract 20 user stories from spec/userstories.md into individual specs/006-026/spec.md files with spec-kit template format - Relocate feature-specific research and plan docs into specs/[feature]/ - Add spec-kit constitution, templates, scripts, and slash commands - Slim down CLAUDE.md to Claude-Code-specific config, delegate principles to .specify/memory/constitution.md - Update ralph.sh with stream-json output and per-iteration logging - Delete old spec/ and docs/agents/ directories - Gitignore Ralph iteration JSONL logs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
64 lines
3.5 KiB
Markdown
64 lines
3.5 KiB
Markdown
# Feature Specification: Initialize Monorepo Structure
|
|
|
|
**Feature**: `001-monorepo-setup`
|
|
**Created**: 2026-03-06
|
|
**Status**: Implemented
|
|
**Source**: Migrated from spec/setup-tasks.md
|
|
|
|
> **Note**: This is a setup task (infrastructure), not a user-facing feature. It establishes the repository structure as a prerequisite for all subsequent development work.
|
|
|
|
## User Scenarios & Testing
|
|
|
|
### User Story 1 - Developer can scaffold and build the monorepo (Priority: P1)
|
|
|
|
A developer cloning the repository for the first time can build both the backend and frontend from a clean checkout with no source code beyond the scaffold.
|
|
|
|
**Why this priority**: Without a working monorepo structure, no further development or CI work is possible.
|
|
|
|
**Independent Test**: Clone the repository, run `./mvnw verify` in `backend/` and `npm run build` in `frontend/` — both must succeed against the empty scaffold.
|
|
|
|
**Acceptance Scenarios**:
|
|
|
|
1. **Given** a fresh clone of the repository, **When** the developer inspects the root, **Then** separate `backend/` and `frontend/` directories exist alongside shared top-level files (README, Dockerfile, CLAUDE.md, LICENSE, .gitignore).
|
|
2. **Given** the `backend/` directory, **When** the developer runs `./mvnw verify`, **Then** the build succeeds with no source code beyond the hexagonal/onion architecture scaffold using Java (latest LTS), Spring Boot, and Maven.
|
|
3. **Given** the `frontend/` directory, **When** the developer runs `npm run build`, **Then** the build succeeds with the Vue 3 + Vite + TypeScript + Vue Router scaffold.
|
|
4. **Given** the repository root, **When** the developer inspects `.gitignore`, **Then** build artifacts, IDE files, and dependency directories for both Java/Maven and Node/Vue are covered.
|
|
|
|
---
|
|
|
|
### Edge Cases
|
|
|
|
- What happens when a developer uses an older Java version? [NEEDS EXPANSION]
|
|
- How does the scaffold behave with no `.env` or environment variables set? [NEEDS EXPANSION]
|
|
|
|
## Requirements
|
|
|
|
### Functional Requirements
|
|
|
|
- **FR-001**: Repository MUST have a `backend/` directory containing a Java Spring Boot Maven project with hexagonal/onion architecture scaffold.
|
|
- **FR-002**: Repository MUST have a `frontend/` directory containing a Vue 3 project with Vite, TypeScript, and Vue Router.
|
|
- **FR-003**: Repository MUST include shared top-level files: README, Dockerfile, CLAUDE.md, LICENSE (GPL), and .gitignore.
|
|
- **FR-004**: Both projects MUST build successfully from an empty scaffold (no application source code required).
|
|
- **FR-005**: `.gitignore` MUST cover build artifacts, IDE files, and dependency directories for both Java/Maven and Node/Vue.
|
|
|
|
### Key Entities
|
|
|
|
- **Monorepo**: Single git repository containing both `backend/` and `frontend/` as separate projects sharing a root.
|
|
|
|
## Success Criteria
|
|
|
|
### Measurable Outcomes
|
|
|
|
- **SC-001**: `cd backend && ./mvnw verify` exits 0 on a clean checkout.
|
|
- **SC-002**: `cd frontend && npm run build` exits 0 on a clean checkout.
|
|
- **SC-003**: All six acceptance criteria are checked off (all complete — status: Implemented).
|
|
|
|
### Acceptance Criteria (original)
|
|
|
|
- [x] Single repository with `backend/` and `frontend/` directories
|
|
- [x] Backend: Java (latest LTS), Spring Boot, Maven, hexagonal/onion architecture scaffold
|
|
- [x] Frontend: Vue 3 with Vite as bundler, TypeScript, Vue Router
|
|
- [x] Shared top-level files: README, Dockerfile, CLAUDE.md, LICENSE (GPL), .gitignore
|
|
- [x] Both projects build successfully with no source code (empty scaffold)
|
|
- [x] .gitignore covers build artifacts, IDE files, and dependency directories for both Java/Maven and Node/Vue
|