- Admin CRUD endpoints for markets with role-based middleware - Anonymous market submission with Cloudflare Turnstile verification - SMTP email notifications on new submissions (LogSender fallback) - Market status workflow (pending/approved/rejected) with admin notes - Nullable location column for submissions without coordinates - CLI tool for promoting users to admin role - Slug generation package extracted from seed - Rate limiting on submission endpoint (3/hour per IP) - Mailpit added to docker-compose for local email testing
44 lines
894 B
YAML
44 lines
894 B
YAML
services:
|
|
postgres:
|
|
image: postgis/postgis:17-3.5
|
|
ports:
|
|
- "5432:5432"
|
|
environment:
|
|
POSTGRES_USER: marktvogt
|
|
POSTGRES_PASSWORD: marktvogt
|
|
POSTGRES_DB: marktvogt
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U marktvogt"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
valkey:
|
|
image: valkey/valkey:8-alpine
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- vkdata:/data
|
|
healthcheck:
|
|
test: ["CMD", "valkey-cli", "ping"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
mailpit:
|
|
image: axllent/mailpit:latest
|
|
ports:
|
|
- "1025:1025" # SMTP
|
|
- "8025:8025" # Web UI
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8025/livez"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
volumes:
|
|
pgdata:
|
|
vkdata:
|