Shopping: - Merged view (default): same ingredient + unit = summed amounts (150g Quark + 300g Quark → 450g Quark) - Shows which recipes need each ingredient - Toggle between 'Zusammengefasst' and 'Nach Rezept' views - Alphabetically sorted in merged view Household bugfixes: - Fixed bouncy modal animation (removed Framer Motion spring) - Fixed clipboard copy on HTTP (textarea fallback) - Fixed logout on join (JWT secrets mismatch in docker-compose) Also: mounted backend data/ volume for recipe images
47 lines
1.2 KiB
YAML
47 lines
1.2 KiB
YAML
services:
|
|
db:
|
|
image: postgres:17-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: luna_recipes
|
|
POSTGRES_USER: luna
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD:-luna-recipes-secret-2026}
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
ports:
|
|
- "127.0.0.1:5433:5432"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U luna -d luna_recipes"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 5
|
|
|
|
backend:
|
|
build: ./backend
|
|
restart: unless-stopped
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
volumes:
|
|
- ./backend/data:/app/data
|
|
environment:
|
|
DATABASE_URL: postgresql://luna:${DB_PASSWORD:-luna-recipes-secret-2026}@db:5432/luna_recipes
|
|
JWT_SECRET: ${JWT_SECRET:-luna-recipes-jwt-secret-change-in-prod-2026}
|
|
JWT_REFRESH_SECRET: ${JWT_REFRESH_SECRET:-luna-recipes-refresh-secret-change-in-prod-2026}
|
|
COOKIE_SECRET: ${COOKIE_SECRET:-luna-recipes-cookie-secret-change-in-prod-2026}
|
|
PORT: "6001"
|
|
NODE_ENV: production
|
|
ports:
|
|
- "6001:6001"
|
|
|
|
frontend:
|
|
build: ./frontend
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- backend
|
|
ports:
|
|
- "6100:80"
|
|
|
|
volumes:
|
|
pgdata:
|