The Node 25 localStorage warning from MSW broke vue-tsc type-check
because the override signature was incompatible with the Signals type.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Human-readable reference for the clarify → plan → tasks → analyze → implement
loop and the file structure it produces.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
Runs Playwright E2E tests with Chromium after checkout.
Uploads HTML report as artifact on failure.
build-and-publish now requires all three test jobs.
Research reports on datetime handling, RFC 9457, font selection.
Implementation plans for US-1 create event and post-review fixes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Post-creation confirmation page showing shareable event URL with
copy-to-clipboard and fallback feedback on failure.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Form with client-side validation, server error handling, aria-invalid/
aria-describedby for a11y, localStorage persistence via useEventStorage
composable. Routes for /create and /events/:token.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
EventController for POST /events, GlobalExceptionHandler mapping
validation and business exceptions to problem+json responses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
JPA entity, repository, persistence adapter for events. Liquibase
changelog creates the events table with BIGSERIAL ID and UUID tokens.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Event entity, CreateEventCommand, ports (CreateEventUseCase,
EventRepository), and EventService with Clock injection for
deterministic testing. Expiry date must be in the future.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Define CreateEventRequest, CreateEventResponse, ProblemDetail, and
ValidationProblemDetail schemas. RFC 9457 problem details for errors.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Strip default Vue components (HelloWorld, TheWelcome, icons, AboutView),
base.css, and placeholder assets. Add Sora font (self-hosted WOFF2),
Electric Dusk color palette, and design system spec.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PostToolUse hook triggers on openapi/*.yaml edits and runs
redocly lint with the recommended ruleset (security-defined
disabled since endpoints are intentionally public).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Honeypot spam protection is overengineered for this project's scope.
Removed the acceptance criteria from both stories and added addenda
documenting the decision. Updated implementation order and review
findings accordingly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The OpenAPI spec is the single source of truth for the REST API
contract. Endpoints and schemas must be defined in the spec before
writing implementation code.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rework the implementation roadmap from parallelizable phases to a strict
sequential order optimized for earliest usable increments. Key changes:
- All 20 user stories in a single sequential queue (no parallelization)
- Progress tracker at the top for status tracking
- US-17 (dark mode) moved from Phase 5 to Increment 4 (before US-15)
- US-14 (PWA) moved to last position
- Deferred AC activation schedule added
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Set up development infrastructure for TDD: JPA + Liquibase for
database migrations, Testcontainers for integration tests against
real PostgreSQL, profile-based configuration (prod/local), and
README deployment documentation with docker-compose example.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Project-specific skill that validates version, checks for clean
working tree and pushed commits, then creates and pushes a SemVer
tag to trigger the CI/CD pipeline.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All manual verification passed:
- Branch push: tests only, no image build
- Non-SemVer tag: tests only, no image build
- SemVer tag (0.0.1): all jobs green, 4 tags in Gitea registry
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The act_runner does not have Buildah installed. Docker is available
via socket forwarding, so use docker build/tag/push instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Single workflow with three jobs:
- backend-test: JDK 25, ./mvnw -B verify (Checkstyle, JUnit, ArchUnit, SpotBugs)
- frontend-test: Node 24, lint, type generation, type-check, unit tests, production build
- build-and-publish: Buildah image build + push with rolling SemVer tags (only on vX.Y.Z tags)
Includes research report and implementation plan.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace server.servlet.context-path=/api with addPathPrefix so API
endpoints stay under /api while static resources and SPA routes are
served at /. Spring Boot falls back to index.html for unknown paths
(SPA forwarding). Multi-stage Dockerfile builds frontend (Node 24)
and backend (Temurin 25) into a single 250MB JRE-alpine image with
Docker-native HEALTHCHECK.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
T-2 was "Dockerfile + configuration" but database connectivity
cannot be meaningfully verified without JPA and migrations (T-4).
Split: T-2 focuses on the multi-stage Dockerfile, T-4 absorbs
DATABASE_URL config, env vars, and docker-compose documentation.
Updated dependency graph and Mermaid diagram accordingly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Check off all T-1 acceptance criteria (retroactively) and the health-check
criterion of T-2. Add methodology rule to CLAUDE.md requiring acceptance
criteria to be checked off when tasks or stories are completed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend: openapi-generator-maven-plugin generates Spring interfaces and DTOs
from the spec. Frontend: openapi-typescript + openapi-fetch provide type-safe
API access. Both sides get compile-time contract enforcement from a single
api.yaml file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Research API-first approach with Spring Boot (openapi-generator-maven-plugin)
and Vue 3 frontend (openapi-typescript + openapi-fetch). Add T-5 setup task
for scaffolding the tooling. Update T-4 to depend on T-5 (removes redundant
API client AC), update implementation phases table and mermaid dependency graph.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>