Commit Graph

67 Commits

Author SHA1 Message Date
bd84f4e355 Merge pull request 'Configure Renovate' (#1) from renovate/configure into master
All checks were successful
CI / backend-test (push) Successful in 51s
CI / frontend-test (push) Successful in 17s
CI / build-and-publish (push) Has been skipped
Reviewed-on: #1
2026-03-04 21:41:58 +01:00
23b264e66e T-4: add JPA, Liquibase, Testcontainers, and deployment docs
All checks were successful
CI / backend-test (push) Successful in 1m4s
CI / frontend-test (push) Successful in 18s
CI / build-and-publish (push) Has been skipped
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>
2026-03-04 21:40:06 +01:00
cb0bcad145 Add release skill for SemVer tagging workflow
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>
2026-03-04 20:35:50 +01:00
e8184be12f T-3: mark CI/CD pipeline complete, update spec and plan
All checks were successful
CI / backend-test (push) Successful in 46s
CI / frontend-test (push) Successful in 17s
CI / build-and-publish (push) Has been skipped
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>
2026-03-04 20:27:57 +01:00
a7303aa859 T-3: switch from Buildah to Docker for image build
All checks were successful
CI / backend-test (push) Successful in 45s
CI / frontend-test (push) Successful in 18s
CI / build-and-publish (push) Successful in 1m15s
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>
0.0.1
2026-03-04 20:19:07 +01:00
977795ffb1 T-3: add Gitea Actions CI/CD pipeline
Some checks failed
CI / backend-test (push) Successful in 46s
CI / frontend-test (push) Successful in 18s
CI / build-and-publish (push) Failing after 5s
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>
2026-03-04 20:08:29 +01:00
316137bf1c T-2: add multi-stage Dockerfile and SPA-serving Spring Boot config
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>
2026-03-04 19:16:50 +01:00
96ef8656bd Rescope T-2 to Docker-only, defer DB wiring to T-4
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>
2026-03-04 18:35:36 +01:00
958222d0c0 Track completion of T-1 and T-2 health endpoint, add progress tracking rule
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>
2026-03-04 18:10:22 +01:00
5ad6a08b72 T-5: set up API-first tooling with OpenAPI spec as single source of truth
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>
2026-03-04 18:06:00 +01:00
1ed379bc1c Add T-5 (API-first tooling) and align spec with new dependency chain
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>
2026-03-04 17:46:48 +01:00
23a6d7d6ad Fix outdated README and defer self-hosting docs to implementation
- Remove aspirational self-hosting section (docker-compose, config table,
  image storage) — will be written when features are actually implemented
- Fix build commands: mvn → ./mvnw, npm test → npm run test:unit
- Remove nonexistent Dockerfile from project structure tree
- Remove Testcontainers from prerequisites (not yet a dependency)
- Add README documentation ACs to US-13 (MAX_ACTIVE_EVENTS) and US-16
  (UNSPLASH_API_KEY + volume mount)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 03:01:56 +01:00
Renovate Bot
f5df2d7290 Add renovate.json 2026-03-04 02:01:38 +00:00
0c88697b2e Replace manual health endpoint with Spring Boot Actuator
Remove the hand-rolled HealthController and use spring-boot-starter-actuator
instead. Only the health endpoint is exposed, with no detail leakage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 02:47:36 +01:00
a9802c2881 Add backpressure stack for agentic coding quality gates
PostToolUse hooks run after every file edit:
- Backend: ./mvnw compile (Checkstyle Google Style + javac)
- Frontend: vue-tsc --noEmit + oxlint + ESLint

Stop hook runs test suites when source files changed, blocks the
agent on failure and re-engages it to fix the issue. Output is
filtered to [ERROR] lines only for context efficiency.

Static analysis: Checkstyle (validate phase), SpotBugs (verify phase),
ArchUnit (9 hexagonal architecture rules as JUnit tests).

Fail-fast: Surefire skipAfterFailureCount=1, Vitest bail=1.
Test log noise suppressed via logback-test.xml (WARN level),
redirectTestOutputToFile, and trimStackTrace.

Existing Java sources reformatted to Google Style (2-space indent,
import order, Javadoc on public types).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 02:44:15 +01:00
a55174b323 T-1: initialize monorepo structure with backend and frontend scaffolds
Backend: Spring Boot 3.5.11 on Java 25, Maven with wrapper, hexagonal
architecture package layout (domain/application/adapter/config), health
endpoint with integration test. Originally planned for Spring Boot 4.0
but pivoted due to massive package reorganization in 4.0 (see addenda
in research and plan docs).

Frontend: Vue 3 scaffolded via create-vue with TypeScript, Vue Router,
Vitest, ESLint, Prettier. Pivoted from Svelte due to ecosystem maturity
concerns (broken router ecosystem for Svelte 5).

Also: extended .gitignore for Java/Maven and Node/Vue artifacts, updated
CLAUDE.md with tech stack, build commands, agent documentation sections,
and document integrity rule.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 01:32:18 +01:00
7b460dd322 initial commit
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 13:03:47 +01:00