- New card-renderer FastAPI service (Python 3.11 + Pillow)
- GET /health, GET /templates
- POST /render (URL input)
- POST /render/file (multipart upload)
- POST /render/meta (dry-run layout metadata)
- nova-artwork-v1 template: cover crop, gradient overlay, text, logo
- SSRF-safe async image fetch with redirect validation
- Smart center cover crop isolated for future YOLO focal-point support
- Graceful font/logo fallback when assets are absent
- docker-compose.yml: add card-renderer service + healthcheck;
extend gateway with CARD_RENDERER_URL and depends_on
- gateway/main.py: proxy endpoints under /cards/*
- GET /cards/templates
- POST /cards/render
- POST /cards/render/file
- POST /cards/render/meta
All protected by existing APIKeyMiddleware