34d30e3134
Media model + migration; an ObjectStore interface with an S3/MinIO (boto3) implementation behind the service layer. Upload (multipart) stores bytes in object storage + a metadata row (checksum, size, content-type, optional attach to person/event/source); list returns presigned URLs; delete is soft. Editor-gated, privacy-filtered, audited. 24 tests pass (object store faked). Introduces the worker container (same image, 'python -m app.worker'): its first job is the scheduled 30-day soft-delete purge across tables + media object cleanup. Compose gains worker + S3 env on backend/worker; dev override builds the worker too. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Justin Paul <justin@jpaul.me>
24 lines
555 B
YAML
24 lines
555 B
YAML
name: provenance
|
|
|
|
# Dev override: build the backend/frontend images locally instead of pulling
|
|
# them from the registry. Layer it on top of the base compose:
|
|
# docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build
|
|
#
|
|
# Use this before CI has published images, or to test local changes.
|
|
|
|
services:
|
|
backend:
|
|
build:
|
|
context: ../backend
|
|
dockerfile: Dockerfile
|
|
|
|
worker:
|
|
build:
|
|
context: ../backend
|
|
dockerfile: Dockerfile
|
|
|
|
frontend:
|
|
build:
|
|
context: ../frontend
|
|
dockerfile: Dockerfile
|