Jasmine v0.1 connects fashion merchants and creators. Merchants upload products and campaign briefs, creators upload authorized portraits and style assets, and the platform generates reviewable AI fashion campaign images with provider logs, QC reports, approvals, and cost estimates.
- Frontend: Next.js App Router, TypeScript, Tailwind CSS, shadcn/ui, TanStack Query, React Hook Form, Zod, Zustand.
- Backend: FastAPI, Python 3.12, Pydantic v2, SQLAlchemy 2.x, Alembic, Celery, Redis.
- Database: PostgreSQL 16. Local tests can use SQLite when Docker is unavailable.
- Storage: S3-compatible adapter. Local development targets MinIO.
- Providers: FASHN Try-On Max/v1.6, FLUX.2 Max/Pro, GPT Image 2, and
internal_mock.
pnpm install
cd apps/api
/Users/zik/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/bin/python3 -m venv .venv
.venv/bin/python -m pip install -e . pytest
cd ../..Start the API without Docker:
pnpm api:devStart the web app:
pnpm devHealth check:
curl http://localhost:8000/healthcp .env.example .env
docker compose up --buildServices:
- web:
http://localhost:3000 - api:
http://localhost:8000 - postgres:
localhost:5432 - redis:
localhost:6379 - minio:
http://localhost:9001
cd apps/api
.venv/bin/alembic upgrade headDefault mode is safe local mock mode:
MODEL_PROVIDER_MODE=mockMock mode runs the full persistence chain: generation_jobs, model_runs, generated_assets, quality_reports, cost_records, and audit_logs.
Set:
MODEL_PROVIDER_MODE=live
FASHN_API_KEY=
FAL_KEY=
OPENAI_API_KEY=Live provider code is isolated in apps/api/app/providers. Business services must not call model APIs directly. Real API key validation is still marked as TODO in docs/model-routing.md.
- Register or log in at
/registeror/login. - Open
/merchant/products/newand create a demo product. - Open
/creator/profileand create a creator profile. - Open
/creator/assetsand add a demo portrait plus consent. - Open
/merchant/campaigns/newand create a demo campaign. - Open
/studio/generateand create afinal_standardjob. - Review the output at
/studio/jobs/{jobId}. - Approve or reject from the review panel.
- Inspect
/admin/jobsand/admin/model-runs.
pnpm api:test
pnpm --filter web lint
pnpm --filter web build- Model API keys are backend-only and never use
NEXT_PUBLIC_*. - Generation requires active creator consent.
- Signed URLs are short-lived.
- Upload presign responses do not expose raw storage keys.
- Third-party output URLs are treated as temporary; worker code stores generated assets under owned storage keys.