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>
This commit is contained in:
2026-03-04 03:01:56 +01:00
parent 0c88697b2e
commit 23a6d7d6ad
2 changed files with 7 additions and 66 deletions

View File

@@ -41,71 +41,12 @@ A privacy-focused, self-hostable web app for event announcements and RSVPs. An a
| Architecture | SPA + RESTful API, hexagonal/onion backend |
| Deployment | Single Docker container |
## Self-hosting
### Prerequisites
- Docker and Docker Compose
- A PostgreSQL instance (self-hosted or managed)
### Quick start
```yaml
# docker-compose.yml
services:
fete:
image: fete:latest
ports:
- "8080:8080"
environment:
DATABASE_URL: "jdbc:postgresql://db:5432/fete"
# Optional: limit simultaneous active events
# MAX_ACTIVE_EVENTS: 100
# Optional: enable Unsplash image search for event headers
# UNSPLASH_API_KEY: your-api-key
depends_on:
- db
db:
image: postgres:17
environment:
POSTGRES_DB: fete
POSTGRES_USER: fete
POSTGRES_PASSWORD: changeme
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
```
```bash
docker compose up -d
```
The app runs at `http://localhost:8080`. Database migrations run automatically on startup.
### Configuration
All configuration is done via environment variables:
| Variable | Required | Description |
|---------------------|----------|-----------------------------------------------------------------------------------------------------------------------------|
| `DATABASE_URL` | Yes | JDBC connection string for PostgreSQL |
| `MAX_ACTIVE_EVENTS` | No | Maximum number of non-expired events. Unset = unlimited |
| `UNSPLASH_API_KEY` | No | Enables header image search via Unsplash. Images are fetched server-side and stored locally — guests never contact Unsplash |
### Image storage
If you use the Unsplash header image feature, mount a persistent volume for stored images so they survive container restarts. The exact path will be documented once the feature is implemented.
## Development
### Prerequisites
- Java (latest LTS) + Maven
- Java (latest LTS) + Maven wrapper (`./mvnw`, included)
- Node.js (latest LTS) + npm
- PostgreSQL (or Docker for Testcontainers)
### Project structure
@@ -114,25 +55,24 @@ fete/
├── backend/ # Spring Boot application (Maven)
├── frontend/ # Vue 3 SPA (Vite, TypeScript)
├── spec/ # User stories, personas, implementation phases
├── Dockerfile # Multi-stage build for production
└── CLAUDE.md # Project statutes and AI agent instructions
```
### Running tests
```bash
# Backend (uses Testcontainers — needs Docker running)
cd backend && mvn test
# Backend
cd backend && ./mvnw test
# Frontend
cd frontend && npm test
cd frontend && npm run test:unit
```
### Building
```bash
# Backend
cd backend && mvn package
cd backend && ./mvnw package
# Frontend
cd frontend && npm run build