nitrix 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
2026-03-03 13:03:47 +01:00
2026-03-03 13:03:47 +01:00
2026-03-03 13:03:47 +01:00
2026-03-03 13:03:47 +01:00

fete

A privacy-focused, self-hostable web app for event announcements and RSVPs. An alternative to Facebook Events or Telegram groups — reduced to the essentials.

What it does

  • Create events with title, description, date, time, location, and an expiry date
  • Share a single link — guests open it, see all details, and RSVP
  • No accounts, no login — the organizer gets a secret token stored in the browser; guests just enter a name
  • Automatic cleanup — all event data is permanently deleted after the expiry date
  • Works offline-first — installable as a PWA, local event list stored entirely in the browser

For organizers

  • Edit event details, post update messages, manage the guest list
  • Cancel or delete events at any time
  • Generate a QR code for posters and flyers
  • Optionally pick a color theme or header image (via self-hosted Unsplash proxy)

For guests

  • RSVP with just a name — no personal data required
  • Bookmark events locally across devices
  • Download .ics or subscribe via webcal:// for calendar integration
  • See highlighted changes and new update indicators on revisit

Privacy by design

  • No analytics, no telemetry, no external requests from the client
  • No CDNs, no Google Fonts, no tracking-capable dependencies
  • Server never logs PII or IP addresses
  • Data retention is bounded by a mandatory expiry date

Tech stack

Layer Technology
Backend Java (latest LTS), Spring Boot, Maven
Frontend Vue 3, Vite, TypeScript
Database PostgreSQL (external, not bundled)
Architecture SPA + RESTful API, hexagonal/onion backend
Deployment Single Docker container

Development

Prerequisites

  • Java (latest LTS) + Maven wrapper (./mvnw, included)
  • Node.js (latest LTS) + npm

Project structure

fete/
├── backend/      # Spring Boot application (Maven)
├── frontend/     # Vue 3 SPA (Vite, TypeScript)
├── spec/         # User stories, personas, implementation phases
└── CLAUDE.md     # Project statutes and AI agent instructions

Running tests

# Backend
cd backend && ./mvnw test

# Frontend
cd frontend && npm run test:unit

Building

# Backend
cd backend && ./mvnw package

# Frontend
cd frontend && npm run build

Code quality

Automated quality gates run as Claude Code hooks during AI-assisted development. They provide immediate feedback after every file edit and block the agent from finishing when tests fail.

Backend (Java / Maven)

After editing a *.java file (PostToolUse hook):

What Command Fails on
Checkstyle ./mvnw compile Style violations (Google Style)
Java compiler ./mvnw compile Compile errors

Checkstyle enforces Google Style (2-space indent, import order, Javadoc on public types) and is bound to the validate phase, so it runs automatically as part of every compile. Covers both src/main and src/test.

When the agent finishes (Stop hook — only if backend/src/ has uncommitted changes):

What Command Fails on
JUnit 5 ./mvnw test Test failures (fail-fast, stops at 1)
ArchUnit (9 rules) ./mvnw test Hexagonal architecture violations

ArchUnit enforces hexagonal boundaries: domain must not depend on adapters, application, config, or Spring; ports must be interfaces; web and persistence adapters must not cross-depend.

Not hooked (run manually):

What Command Fails on
SpotBugs ./mvnw verify Potential bugs, null dereferences, resource leaks

Frontend (TypeScript / Vue)

After editing a *.ts or *.vue file (PostToolUse hook):

What Command Fails on
TypeScript (strict) vue-tsc --noEmit Type errors
oxlint + ESLint oxlint, eslint Lint violations

When the agent finishes (Stop hook — only if frontend/src/ has uncommitted changes):

What Command Fails on
Vitest npm run test:unit -- --run Test failures (fail-fast, stops at 1)

Not hooked (run manually or via editor):

What Command Fails on
Prettier npm run format Formatting issues

License

GPL — see LICENSE for details.

Description
No description provided
Readme GPL-3.0 6.8 MiB
v0.14.0 Latest
2026-03-14 11:40:42 +01:00
Languages
TypeScript 38.3%
Java 28.5%
Vue 15.5%
Shell 14.8%
CSS 2.5%
Other 0.4%