Commit Graph

125 Commits

Author SHA1 Message Date
e248a2ee06 Add ArchUnit rule: web adapter must not depend on outbound ports
Prevents future regressions where controllers bypass the application layer
and access repositories directly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 12:05:00 +01:00
fc77248c38 Extract CountAttendeesByEventUseCase to decouple controller from repository
The EventController was directly accessing RsvpRepository (an outbound port)
to count attendees, bypassing the application layer. Introduce a dedicated
inbound port and implement it in RsvpService. Remove the now-unused Clock
dependency from RsvpService.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 12:04:51 +01:00
a625e34fe4 Add RSVP creation endpoint with typed tokens and attendee count
Introduce typed token value objects (EventToken, OrganizerToken,
RsvpToken) and refactor all existing Event code to use them.

Add POST /events/{token}/rsvps endpoint that persists an RSVP and
returns an rsvpToken. Populate attendeeCount in GET /events/{token}
from a real count query instead of hardcoded 0.

Includes: OpenAPI spec, Liquibase migration (rsvps table with
ON DELETE CASCADE), domain model, hexagonal ports/adapters,
service layer, and full test coverage (unit + integration).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 11:49:49 +01:00
4828d06aba Add 008-rsvp feature spec and design artifacts
Spec, research decisions, implementation plan, data model,
API contract, and task breakdown for the RSVP feature.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 11:48:00 +01:00
cac2903807 Merge pull request 'Update dependency eslint to v10.0.3' (#15) from renovate/eslint-monorepo into master
All checks were successful
CI / backend-test (push) Successful in 56s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 58s
CI / build-and-publish (push) Has been skipped
Reviewed-on: #15
2026-03-07 00:07:17 +01:00
Renovate Bot
210118bf9a Update dependency eslint to v10.0.3
All checks were successful
CI / backend-test (push) Successful in 54s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 52s
CI / build-and-publish (push) Has been skipped
2026-03-06 23:02:21 +00:00
9a78ebd9b0 Add merge-pr skill for Gitea PR + CI workflow
All checks were successful
CI / backend-test (push) Successful in 54s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 53s
CI / build-and-publish (push) Has been skipped
Encodes the workflow for creating PRs, monitoring CI status via
Actions API (cross-referencing head SHA), and merging when green.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 23:04:55 +01:00
5f50ea991b Merge pull request 'Add public event detail page (007-view-event)' (#14) from 007-view-event into master
All checks were successful
CI / backend-test (push) Successful in 55s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 52s
CI / build-and-publish (push) Successful in 1m1s
Reviewed-on: #14
0.2.0
2026-03-06 22:57:04 +01:00
fd9175925e Use vue-tsc --build in frontend hook to match CI
All checks were successful
CI / backend-test (push) Successful in 57s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 52s
CI / build-and-publish (push) Has been skipped
The hook used --noEmit which is less strict than CI's --build,
causing type errors to slip through.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 22:54:41 +01:00
63108f4eb5 Fix TypeScript type errors in frontend test files
- Add missing timezone field to CreateEventResponse mock
- Fix createTestRouter signature to accept optional token parameter
- Add non-null assertion for dateField element access

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 22:53:36 +01:00
cd71110514 Add test-results/ to gitignore
Some checks failed
CI / backend-test (push) Successful in 1m1s
CI / frontend-test (push) Failing after 17s
CI / frontend-e2e (push) Successful in 52s
CI / build-and-publish (push) Has been skipped
Playwright test artifacts should not be tracked.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 22:34:51 +01:00
76b48d8b61 Add EventDetailView with loading, expired, not-found, and error states
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>
2026-03-06 22:34:51 +01:00
e5d0dd5f8f Implement GET /events/{token} backend with timezone support
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>
2026-03-06 22:34:51 +01:00
e77e479e2a Add GET /events/{token} endpoint and timezone field to OpenAPI spec
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>
2026-03-06 22:34:51 +01:00
80d79c3596 Add design artifacts for view event feature (007)
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>
2026-03-06 22:34:51 +01:00
7efe932621 Merge pull request 'Update actions/upload-artifact action to v7' (#13) from renovate/major-github-artifact-actions into master
All checks were successful
CI / backend-test (push) Successful in 56s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 50s
CI / build-and-publish (push) Has been skipped
Reviewed-on: #13
2026-03-06 22:29:15 +01:00
a56a26b1f0 Merge pull request 'Update actions/setup-node action to v6' (#12) from renovate/actions-setup-node-6.x into master
All checks were successful
CI / backend-test (push) Successful in 55s
CI / frontend-test (push) Successful in 22s
CI / frontend-e2e (push) Successful in 50s
CI / build-and-publish (push) Has been skipped
Reviewed-on: #12
2026-03-06 21:27:18 +01:00
906ba99b75 Merge pull request 'Update actions/setup-java action to v5' (#11) from renovate/actions-setup-java-5.x into master
Some checks failed
CI / backend-test (push) Has been cancelled
CI / frontend-test (push) Has been cancelled
CI / frontend-e2e (push) Has been cancelled
CI / build-and-publish (push) Has been cancelled
Reviewed-on: #11
2026-03-06 21:25:03 +01:00
da08752642 Merge pull request 'Update actions/checkout action to v6' (#10) from renovate/actions-checkout-6.x into master
Some checks failed
CI / backend-test (push) Has been cancelled
CI / frontend-test (push) Has been cancelled
CI / frontend-e2e (push) Has been cancelled
CI / build-and-publish (push) Has been cancelled
Reviewed-on: #10
2026-03-06 21:22:58 +01:00
014b3b0171 Merge pull request 'Update oxlint monorepo to ~1.51.0' (#6) from renovate/oxlint-monorepo into master
Some checks failed
CI / backend-test (push) Has been cancelled
CI / frontend-test (push) Has been cancelled
CI / frontend-e2e (push) Has been cancelled
CI / build-and-publish (push) Has been cancelled
Reviewed-on: #6
2026-03-06 21:20:53 +01:00
33aff5bff5 Merge pull request 'Update dependency @vue/tsconfig to ^0.9.0' (#5) from renovate/vue-tsconfig-0.x into master
Some checks failed
CI / backend-test (push) Has been cancelled
CI / frontend-test (push) Has been cancelled
CI / frontend-e2e (push) Has been cancelled
CI / build-and-publish (push) Has been cancelled
Reviewed-on: #5
2026-03-06 21:18:46 +01:00
6de0769d70 Merge pull request 'Update eclipse-temurin Docker tag' (#3) from renovate/eclipse-temurin-25.x into master
Some checks failed
CI / backend-test (push) Has been cancelled
CI / frontend-test (push) Has been cancelled
CI / frontend-e2e (push) Has been cancelled
CI / build-and-publish (push) Has been cancelled
Reviewed-on: #3
2026-03-06 21:16:41 +01:00
6a16255984 Merge pull request 'Update dependency org.codehaus.mojo:build-helper-maven-plugin to v3.6.1' (#2) from renovate/org.codehaus.mojo-build-helper-maven-plugin-3.x into master
Some checks failed
CI / backend-test (push) Has been cancelled
CI / frontend-test (push) Has been cancelled
CI / frontend-e2e (push) Has been cancelled
CI / build-and-publish (push) Has been cancelled
Reviewed-on: #2
2026-03-06 21:14:34 +01:00
2ce3ce0d05 Merge pull request 'Update dependency maven to v3.9.13' (#8) from renovate/maven-3.x into master
Some checks failed
CI / backend-test (push) Has been cancelled
CI / frontend-test (push) Has been cancelled
CI / frontend-e2e (push) Has been cancelled
CI / build-and-publish (push) Has been cancelled
Reviewed-on: #8
2026-03-06 21:12:25 +01:00
Renovate Bot
ca651d4c05 Update actions/upload-artifact action to v7
All checks were successful
CI / backend-test (push) Successful in 56s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 50s
CI / build-and-publish (push) Has been skipped
2026-03-06 20:07:53 +00:00
Renovate Bot
1e065bef18 Update actions/setup-node action to v6
All checks were successful
CI / backend-test (push) Successful in 1m1s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 53s
CI / build-and-publish (push) Has been skipped
2026-03-06 20:07:51 +00:00
Renovate Bot
6e655597d7 Update actions/setup-java action to v5
All checks were successful
CI / backend-test (push) Successful in 53s
CI / frontend-test (push) Successful in 20s
CI / frontend-e2e (push) Successful in 49s
CI / build-and-publish (push) Has been skipped
2026-03-06 20:07:48 +00:00
Renovate Bot
e10b88ee5f Update actions/checkout action to v6
All checks were successful
CI / backend-test (push) Successful in 54s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 49s
CI / build-and-publish (push) Has been skipped
2026-03-06 20:07:46 +00:00
Renovate Bot
465fc2178f Update oxlint monorepo to ~1.51.0
All checks were successful
CI / backend-test (push) Successful in 55s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 49s
CI / build-and-publish (push) Has been skipped
2026-03-06 20:07:38 +00:00
Renovate Bot
9e48debca7 Update dependency @vue/tsconfig to ^0.9.0
All checks were successful
CI / backend-test (push) Successful in 54s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 50s
CI / build-and-publish (push) Has been skipped
2026-03-06 20:07:33 +00:00
Renovate Bot
fc344d3ca0 Update eclipse-temurin Docker tag
All checks were successful
CI / backend-test (push) Successful in 55s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 50s
CI / build-and-publish (push) Has been skipped
2026-03-06 20:07:25 +00:00
Renovate Bot
e04a86399c Update dependency org.codehaus.mojo:build-helper-maven-plugin to v3.6.1
All checks were successful
CI / backend-test (push) Successful in 58s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 51s
CI / build-and-publish (push) Has been skipped
2026-03-06 20:07:22 +00:00
Renovate Bot
0069747e68 Update dependency maven to v3.9.13
All checks were successful
CI / backend-test (push) Successful in 57s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 50s
CI / build-and-publish (push) Has been skipped
2026-03-06 20:07:18 +00:00
1e7b0cb56c Merge pull request 'Update dependency @types/node to v24.12.0' (#9) from renovate/node-24.x-lockfile into master
Some checks failed
CI / backend-test (push) Successful in 54s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 52s
CI / build-and-publish (push) Has been cancelled
Reviewed-on: #9
2026-03-06 21:06:14 +01:00
Renovate Bot
d248bcd944 Update dependency @types/node to v24.12.0
All checks were successful
CI / backend-test (push) Successful in 55s
CI / frontend-test (push) Successful in 20s
CI / frontend-e2e (push) Successful in 54s
CI / build-and-publish (push) Has been skipped
2026-03-06 20:03:33 +00:00
074f4ef1ee Remove process.emit warning suppression hack from Playwright config
All checks were successful
CI / backend-test (push) Successful in 55s
CI / frontend-test (push) Successful in 21s
CI / frontend-e2e (push) Successful in 49s
CI / build-and-publish (push) Has been skipped
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>
2026-03-06 20:59:35 +01:00
1afdd0a462 Add spec-kit workflow guide
Some checks failed
CI / backend-test (push) Successful in 59s
CI / frontend-test (push) Failing after 16s
CI / frontend-e2e (push) Successful in 51s
CI / build-and-publish (push) Has been skipped
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>
2026-03-06 20:22:39 +01:00
6aeb4b8bca Migrate project artifacts to spec-kit format
- 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>
2026-03-06 20:19:41 +01:00
0b2b84dafc Add E2E tests to stop hook and README
Some checks failed
CI / backend-test (push) Successful in 55s
CI / frontend-test (push) Failing after 17s
CI / frontend-e2e (push) Successful in 52s
CI / build-and-publish (push) Has been skipped
- Stop hook now triggers on frontend/e2e/ changes
- Stop hook runs Playwright E2E tests alongside unit tests
- README documents test:e2e command and Playwright in code quality section
2026-03-06 18:19:39 +01:00
562631f151 Add frontend-e2e job to CI pipeline
Some checks failed
CI / backend-test (push) Successful in 57s
CI / frontend-test (push) Failing after 17s
CI / frontend-e2e (push) Successful in 1m3s
CI / build-and-publish (push) Has been skipped
Runs Playwright E2E tests with Chromium after checkout.
Uploads HTML report as artifact on failure.
build-and-publish now requires all three test jobs.
2026-03-06 18:16:07 +01:00
9cf199dd9f Add Playwright E2E tests with MSW API mocking
- Playwright + @msw/playwright + @msw/source for OpenAPI-driven mocks
- Chromium-only configuration with Vite dev server integration
- Smoke tests: home page, CTA, navigation
- US-1 tests: validation, event creation flow, localStorage, error handling
- Suppress Node 25 --localstorage-file warning from MSW cookieStore
2026-03-06 18:16:07 +01:00
b2d37d9269 Add example fields to CreateEventResponse schema
Required for @msw/source mock generation in E2E tests.
Also good OpenAPI documentation practice.
2026-03-06 18:13:50 +01:00
ffea279b54 Update CLAUDE.md with build commands and project conventions
All checks were successful
CI / backend-test (push) Successful in 1m3s
CI / frontend-test (push) Successful in 19s
CI / build-and-publish (push) Successful in 55s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0.1.0
2026-03-05 10:58:20 +01:00
4cfac860aa Add US-20 (404 page) to user stories
Catch-all route for unknown paths with link back to home.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:58:10 +01:00
e3ca613210 Add agent research and implementation plan docs for US-1
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>
2026-03-05 10:57:44 +01:00
14f11875a4 Add Vite dev proxy for backend API
Proxy /api requests to localhost:8080 during development.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:57:20 +01:00
a029e951b8 Add event stub page with clipboard sharing
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>
2026-03-05 10:57:10 +01:00
84feeb9997 Implement event creation frontend (EventCreateView)
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>
2026-03-05 10:56:59 +01:00
f3d4b5fa17 Add REST controller with RFC 9457 error handling
EventController for POST /events, GlobalExceptionHandler mapping
validation and business exceptions to problem+json responses.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:56:48 +01:00
c80074093c Add persistence layer with Liquibase migration
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>
2026-03-05 10:56:39 +01:00