Containerized local platform to generate AI music videos end-to-end with:
- Astro frontend dashboard
- Express API + BullMQ worker backend
- Postgres metadata store
- Redis queue broker
- MinIO object storage
- Suno API for music generation
- FFmpeg video composition in backend container
apps/frontend: Astro dashboard (no auth, single-user local UX)apps/backend: Express API + worker pipelinedocs: architecture, ADRs, runbooksscripts: automation scripts (Suno bootstrap, curl endpoint checks)
- Create env file:
cp .env.example .env- Fill required secrets in
.env:
OPENAI_API_KEY(optional, fallback exists for lyrics/image)SUNO_COOKIEand any required suno-api env keys
- Install dependencies:
npm install- Clone Suno fork into infrastructure folder:
npm run bootstrap:suno- Run full local stack:
npm run up- Open app:
- Frontend:
http://localhost:4321 - API:
http://localhost:8080/api/v1
npm run up: start all containersnpm run down: stop all containersnpm run logs: tail container logsnpm run format: run prettier writenpm run lint: run eslint across workspacesnpm run test: run workspace testsnpm run test:api:curls: backend endpoint smoke/e2e flow via curlnpm run check: format-check + lint + tests
GET /api/v1/healthPOST /api/v1/jobsGET /api/v1/jobs/:idGET /api/v1/jobs/:id/events(SSE)GET /api/v1/jobs/:id/artifacts
- Queue-based async pipeline with retry/backoff
- Persistent metadata + artifact storage split
- Stage events for observability and UI timeline
- FFmpeg subtitle fallback mode for resilient rendering
See AGENTS.md for mandatory lint/format/test and manual verification requirements.