- 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>
3.5 KiB
3.5 KiB
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:
- Given a fresh clone of the repository, When the developer inspects the root, Then separate
backend/andfrontend/directories exist alongside shared top-level files (README, Dockerfile, CLAUDE.md, LICENSE, .gitignore). - 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. - Given the
frontend/directory, When the developer runsnpm run build, Then the build succeeds with the Vue 3 + Vite + TypeScript + Vue Router scaffold. - 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
.envor 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:
.gitignoreMUST cover build artifacts, IDE files, and dependency directories for both Java/Maven and Node/Vue.
Key Entities
- Monorepo: Single git repository containing both
backend/andfrontend/as separate projects sharing a root.
Success Criteria
Measurable Outcomes
- SC-001:
cd backend && ./mvnw verifyexits 0 on a clean checkout. - SC-002:
cd frontend && npm run buildexits 0 on a clean checkout. - SC-003: All six acceptance criteria are checked off (all complete — status: Implemented).
Acceptance Criteria (original)
- Single repository with
backend/andfrontend/directories - Backend: Java (latest LTS), Spring Boot, Maven, hexagonal/onion architecture scaffold
- Frontend: Vue 3 with Vite as bundler, TypeScript, Vue Router
- Shared top-level files: README, Dockerfile, CLAUDE.md, LICENSE (GPL), .gitignore
- Both projects build successfully with no source code (empty scaffold)
- .gitignore covers build artifacts, IDE files, and dependency directories for both Java/Maven and Node/Vue