Setup
Deploy guide
This guide walks you from the One-Click Deploy button to a running Playlist Craft dashboard on your Railway account. You can buy the lifetime license before or after deploy — activation happens in the app license gate either way.
1. Open One-Click Deploy
- From playlistcraft.com, click One-Click Deploy (or open the Railway template deploy URL).
- If you do not have a Railway account yet, create one quickly (email / Google / GitHub) and finish signup.
- Sign in, then confirm Deploy. Railway opens a new project on your dashboard from the Playlist Craft template.
Deploy creates the project and services. Lifetime product access still needs a license key from playlistcraft.com/pricing (or /get-license) pasted into the activate gate after /setup.
2. Project settings → Shared Variables
In the Railway project, open Project Settings → Shared Variables. This is where you configure what you personally must provide. Internal service-to-service API keys are already wired with Railway secret formulas and cross-service references — you should not hand-generate those.
- Example: s3-server uses a generated PRESIGN_API_KEY (secret formula).
- main-server references that value from the s3-server service (e.g. S3_SERVER_API_KEY → s3-server.PRESIGN_API_KEY).
- Similar patterns apply to other internal keys so services trust each other without you pasting matching secrets by hand.
3. What you still fill in (third-party keys)
You only need accounts and API keys from the platforms Playlist Craft calls on your behalf:
- OpenRouter — ideation / lyrics models (key from https://openrouter.ai/workspaces/default/keys)
- Suno — music generation via sunoapi.org (credit packs; balances show in the sidebar after generations)
- Fal — image / video media generation (https://fal.ai/dashboard/keys — use ADMIN scope to show sidebar balances, or API scope to hide them)
- Email — Resend or ZeptoMail (pick one; see below)
- Google OAuth — YOUTUBE_CLIENT_ID + YOUTUBE_CLIENT_SECRET in Shared Variables for YouTube upload (see YouTube OAuth)
Never put Polar organization tokens in your Railway project. Polar is only used on playlistcraft.com checkout; activation phones home to Playlist Craft’s license broker. Projected spend: playlistcraft.com/costs.
4. Choose an email provider
Team invites and transactional mail need one provider. Set EMAIL_SERVER to resend or zeptomail and add that provider’s keys to Shared Variables.
Resend (simple free tier)
- Sign up: https://resend.com/signup
- Free plan includes about 100 emails per day — enough for admin invites and light transactional use while you get started.
- Create an API key, verify a sending domain (or use their onboarding sender), set RESEND_API_KEY and RESEND_FROM_EMAIL, and EMAIL_SERVER=resend.
ZeptoMail (credit packs)
- Sign up: https://www.zoho.com/zeptomail/
- Credits are purchase-based — roughly $3 can get about 10,000 email credits that expire after 6 months, which is also plenty for self-host usage.
- Create a token, set ZEPTOMAIL_TOKEN, ZEPTOMAIL_FROM_EMAIL, ZEPTOMAIL_FROM_NAME, and EMAIL_SERVER=zeptomail.
Pick whichever you prefer. You can switch later by changing EMAIL_SERVER and the matching Shared Variables — no code change. Details: Email sender doc.
5. Domains, /setup, activate
- Generate public domains for services that need them (especially web, main-server, and youtube-server if used).
- Open your web URL → /setup and create the admin account.
- Sign in. When the license gate appears, paste the key from Polar (buy on Pricing / Get license if you have not yet).
- Start generating. More env/URL detail: Shared variables, Railway services, S3 & public URLs, License activation.