New view fetches event via openapi-fetch, formats date/time with
Intl.DateTimeFormat. Skeleton shimmer during loading (CSS-only).
Create form now sends auto-detected timezone.
Unit tests for all five view states, E2E tests with MSW mocks.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Domain: add timezone field to Event and CreateEventCommand.
Ports: new GetEventUseCase inbound port.
Service: implement getByEventToken, validate IANA timezone on create.
Controller: map to GetEventResponse, compute expired flag via Clock.
Persistence: timezone column in JPA entity and mapping.
Tests: integration tests use DTOs + ObjectMapper instead of inline JSON,
GET tests seed DB directly via JpaRepository for isolation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OpenAPI: new GetEventResponse schema, timezone on Create request/response.
Liquibase: add timezone VARCHAR(64) NOT NULL DEFAULT 'UTC' column.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Spec, research, data model, API contract, implementation plan, and
task breakdown for the public event detail page.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>