You press Create
generateSong() → queueSong() · src/actions/generation.ts
playing
BrowserReact 19 · holds no authority/· home feed/create· song-panel/favorites· liked songs/customer-portal· billingsound-bar· player storeNext.js 16 — web tierrequest-scoped · stateless · dies with the responseserver actions — "use server"generateSong() getPlayUrl()recordListen() toggleLikeSong()renameSong() setPublishedStatus()getUserLikedSongs()· every export is a public endpointroute handlers/api/inngest/api/auth/[...all]· Inngest re-enters· the app herelibauth.ts better-auths3.ts getPresignedUrlproducts.ts· s3.ts is import "server-only"Inngest — generate-songdurable · at-least-once · concurrency limit 1, key event.data.userIdprepare-requestreserve-creditset-status-processingstep.fetch(endpoint)update-song-resultfailure paths: set-status-no-credits refund-credit + set-status-failed onFailure(event) — terminal, after retriesModal — MusicGenServerL40S · scaledown_window=10 · ephemeral · no DB access@modal.fastapi_endpoint · requires_proxy_authgenerate_from_descriptiongenerate_with_lyricsgenerate_with_described_lyrics@modal.enter() load_modelACEStepPipeline /models · bfloat16Qwen2-7B-Instruct prompt/lyrics/tagsSDXL-Turbo 2 steps · gs 0.0Polarcheckout() · webhooks· credits: { increment }PostgresSong User Like CategorySession Account VerificationSong.status 5 valuesSong.creditReserved refund gateSong.creditRefunded replay gateS3objects{uuid}.wav audio{uuid}.png cover artread pathGetObjectCommandgetSignedUrl(expiresIn: 3600)· a bearer capability:· anyone holding the URL· can read for one hour