# fete

A privacy-focused, self-hostable PWA for event announcements and RSVPs. Alternative to Facebook Events or Telegram groups — reduced to the essentials.

## Constitution

Project principles, constraints, tech stack, and governance are defined in `.specify/memory/constitution.md`. That file is the single source of truth — read and follow it.

## Language

- Conversation and brainstorming: German.
- Code, comments, commits, documentation: English — no exceptions.

## Build Commands

| What             | Command                                |
|------------------|----------------------------------------|
| Backend test     | `cd backend && ./mvnw test`            |
| Backend run      | `cd backend && ./mvnw spring-boot:run` |
| Frontend install | `cd frontend && npm install`           |
| Frontend build   | `cd frontend && npm run build`         |
| Frontend test    | `cd frontend && npm run test:unit`     |
| Frontend dev     | `cd frontend && npm run dev`           |
| Backend checkstyle | `cd backend && ./mvnw checkstyle:check` |
| Backend full verify | `cd backend && ./mvnw verify`         |

## Agent Documentation

- Feature specs, research, and plans: `specs/[NNN-feature-name]/` (e.g. `specs/006-create-event/spec.md`, `research.md`, `plan.md`)
- Cross-cutting research: `.specify/memory/research/`
- Cross-cutting plans: `.specify/memory/plans/`
- Agent test reports (browser verification): `.agent-tests/` (gitignored)
- Use the `browser-interactive-testing` skill (rodney/showboat) for visual verification — this is an agent tool, not manual work.

## Skills

The following skills are available and should be used for their respective purposes:

| Skill                         | Trigger                                      | Purpose                                                                                                                 |
|-------------------------------|----------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|
| `rpi-research`                | Deep codebase investigation needed           | Conducts thorough research and produces a written report. Use for understanding how something works before changing it. |
| `rpi-plan`                    | Feature, refactor, or bug fix needs planning | Creates detailed, phased implementation plans through interactive research and iteration.                               |
| `rpi-implement`               | Approved plan ready for execution            | Executes approved implementation plans phase by phase with automated and manual verification.                           |
| `browser-interactive-testing` | Visual verification of web pages             | Headless Chrome testing via rodney/showboat. Use for screenshots, browser automation, and visual test reports.          |

## Ralph Loops

- Autonomous work is done via Ralph Loops. See [.claude/rules/ralph-loops.md](.claude/rules/ralph-loops.md) for documentation.
- The loop runner is `ralph.sh`. Each run lives in its own directory under `.ralph/`.
- Run directories contain: `instructions.md` (prompt), `chief-wiggum.md` (directives), `answers.md` (human answers), `questions.md` (Ralph's questions), `progress.txt` (iteration log), `meta.md` (metadata), `run.log` (execution log).
- Project specifications (user stories, setup tasks, personas, etc.) live in `specs/` (feature dirs) and `.specify/memory/` (cross-cutting docs).

## Active Technologies
- TypeScript 5.x, Vue 3 (Composition API) + openapi-fetch, Vue Router, Vite (018-cancel-event-list)
- localStorage via `useEventStorage()` composable (018-cancel-event-list)

## Recent Changes
- 018-cancel-event-list: Added TypeScript 5.x, Vue 3 (Composition API) + openapi-fetch, Vue Router, Vite
