render.yaml file that configures all services via Render’s Blueprints feature.
render.yaml
Add this file to the root of your repository:sync: false must be entered manually in the Render Dashboard after the Blueprint is deployed.
Deploying
1
Push render.yaml to your repository
Commit
render.yaml to the root of your repository and push to GitHub.2
Create a Render account and Blueprint
- Sign up at render.com
- Click New → Blueprint
- Connect your GitHub account and select your repository
- Render detects
render.yamland shows a preview of all services to be created - Click Apply
3
Fill in manual environment variables
After the Blueprint deploys, go to the
acme-api service:- Environment tab → fill in all
sync: falsevariables:- JWT keys (generate new ones — see JWT Key Generation)
- Stripe live keys
- Resend API key and email address
APP_URLandAPI_URL(use the Render-provided URLs initially)
- Do the same for the
acme-frontendservice:VITE_API_URL= the URL of youracme-apiservice
- Click Save Changes — Render triggers a new deploy
4
Run migrations
From the Render Dashboard:
- Click on the
acme-apiservice - Click Shell (top right)
- In the shell:
5
Run the database seeder
In the same shell:
6
Add a custom domain (optional)
- Go to your
acme-apiservice → Settings → Custom Domains - Add
api.yourdomain.com - Add the CNAME record Render provides to your DNS
- Repeat for the frontend service at
yourdomain.com - Update
APP_URL,API_URL, andVITE_API_URLenvironment variables with the new domain names
7
Register the Stripe webhook
Stripe Dashboard → Developers → Webhooks → Add endpoint
- URL:
https://api.yourdomain.com/api/v1/webhooks/stripe - Events: checkout.session.completed, customer.subscription.updated, customer.subscription.deleted, invoice.payment_failed, invoice.payment_succeeded
- Copy signing secret → update
STRIPE_WEBHOOK_SECRETin Render
Render’s free tier spins down services after 15 minutes of inactivity and takes ~30 seconds to wake up on the next request. This is noticeable for evaluation but not suitable for a real application. Upgrade to the Starter plan ($7/mo) to keep services always running.