Atelier Lens FastAPI backend for the hackathon submission.
Implemented scope:
- Backend A
- Auth / User / Social Login
- GuestSession
- Product / Variant / Image / Tag
- Recent Product
- Cart
- Order / MockPayment
- RegisteredProduct
- Care Guide
- Store / Campaign / QR
- Backend B
- FileMetadata / Local Storage / Private File
- Job / BackgroundTasks
- OCR / PaddleOCR
- Avatar
- Mock Try-on / Photo Try-on
- Rule-based Recommendation
- SavedCoordi
- Diagnosis / Damage / MockDiagnosisProvider
- RepairReservation
- CleanupService
- Python 3.12
- Docker Desktop
- PostgreSQL via Docker Compose
Create .env from .env.example.
Required values:
BACKEND_CORS_ORIGINSPOSTGRES_DBPOSTGRES_USERPOSTGRES_PASSWORDDATABASE_URLJWT_SECRET_KEY
Notes:
JWT_SECRET_KEYshould be at least 32 bytes.FILE_ROOTdefaults to./data.BACKEND_CORS_ORIGINSis a comma-separated origin list for browser access.
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"docker compose up -d
docker compose psExpected service:
atelier-lens-postgres
.\.venv\Scripts\python.exe -m alembic heads
.\.venv\Scripts\python.exe -m alembic upgrade head.\.venv\Scripts\python.exe -m scripts.seedSeeded demo catalog uses DEMO-* product codes. These are demo identifiers, not real MCM product codes.
.\.venv\Scripts\python.exe -m uvicorn app.main:app --host 127.0.0.1 --port 8000 --reload- Health:
http://127.0.0.1:8000/api/v1/health - Swagger:
http://127.0.0.1:8000/docs - OpenAPI:
http://127.0.0.1:8000/openapi.json
.\.venv\Scripts\python.exe -m pytest.\.venv\Scripts\python.exe -m scripts.generate_ocr_test_imagesGenerated file:
data/temporary/ocr-demo-DEMO-BAG-001.png
.\.venv\Scripts\python.exe -m scripts.cleanup_onceRemoves expired:
- private files with TTL
- unsaved try-on rows/files
- orphan jobs
- guest sessions