Deploy to Render
Proseweave runs on Render using a Blueprint (render.yaml) that defines all services in a single file: the Fastify backend, generation worker, React frontend, PostgreSQL database, and Redis cache.
Prerequisites
- A Render account
- The Proseweave GitHub repository connected to your Render account
- An Anthropic API key
- DigitalOcean Spaces credentials (for image storage — cover images, uploads)
Blueprint Deployment
1. Connect your repository
- Log in to the Render Dashboard.
- Go to New → Blueprint.
- Select the
epeder10/proseweaverepository and themainbranch. - Render detects
render.yamlautomatically.
2. Review services
Render will show the services it will create:
| Service | Type | Description |
|---|---|---|
backend | Web Service | Fastify API on port 8000 |
generation-worker | Background Worker | Runs node dist/worker.js |
frontend | Static Site | React SPA with pre-rendered landing page |
proseweave-db | PostgreSQL | Basic plan database |
proseweave-redis | Key Value (Redis) | Starter plan, used for caching and rate limiting |
3. Set secrets
Render will prompt you to fill in any environment variables marked sync: false. Set these before clicking Apply:
| Variable | Where to get it |
|---|---|
ANTHROPIC_API_KEY | Anthropic Console |
JWT_SECRET | Generate a random 64-char string |
CORS_ORIGINS | Your production frontend URL (e.g. https://proseweave.ai) |
FRONTEND_URL | Same as CORS_ORIGINS |
OAUTH_BASE_URL | Same as CORS_ORIGINS |
DO_SPACES_KEY | DigitalOcean Spaces access key |
DO_SPACES_SECRET | DigitalOcean Spaces secret |
DO_SPACES_BUCKET | Spaces bucket name |
DO_SPACES_REGION | e.g. nyc3 |
DO_SPACES_ENDPOINT | e.g. https://nyc3.digitaloceanspaces.com |
DATABASE_URL, MIGRATION_DATABASE_URL, and REDIS_URL are injected automatically by Render from the provisioned database and Redis service — you do not set these manually.
4. Apply the Blueprint
Click Apply. Render provisions all services and runs initial deployments. The first build takes a few minutes.
Database Migration from DigitalOcean
If you're migrating from an existing DigitalOcean PostgreSQL database:
-
Export from DO:
pg_dump $DO_DATABASE_URL > proseweave_backup.sql -
Import into Render:
psql $RENDER_DATABASE_URL < proseweave_backup.sql -
Run migrations (if any pending):
# From the Render Dashboard → backend service → Shell
npm run migrate
Run the Render backend in maintenance mode or stop it during the import to prevent writes to the old database from being lost.
DigitalOcean Spaces (Image Storage)
Proseweave continues to use DigitalOcean Spaces for image storage — there is no equivalent Render service. Cover images and user uploads are stored in Spaces and served via its CDN.
The DO_SPACES_* environment variables connect both the backend service and the generation-worker to the same Spaces bucket. No migration is required for existing images — they remain in place.
Redis
Render provisions a managed Redis Key Value store (proseweave-redis). It is used by:
- Backend — rate limiting and response caching
- Generation Worker — job queue coordination (BullMQ integration is forthcoming; the
REDIS_URLenv var is already wired)
Redis is automatically connected via the REDIS_URL environment variable, which Render injects from the provisioned Key Value service.
Auto-Deploy
Render watches the main branch and automatically redeploys all services on every push. No manual trigger is needed for normal releases.
To update the Blueprint spec (add a service, change an env var):
- Edit
render.yamland push tomain. - In the Render Dashboard, go to Settings → Blueprint → Sync to apply the changes.
Custom Domain
- In the Render Dashboard, open the
frontendstatic site. - Go to Settings → Custom Domains → Add Custom Domain.
- Add your domain (e.g.
proseweave.ai) and follow the DNS instructions. - Repeat for the
backendservice if you want a dedicated API subdomain (e.g.api.proseweave.ai). - Update the
CORS_ORIGINS,FRONTEND_URL, andOAUTH_BASE_URLenv vars on the backend to match the new frontend domain.
Render provisions TLS certificates automatically via Let's Encrypt once DNS propagates.
Docs Site
The Docusaurus docs site is deployed as a separate Render static site watching the docs/ directory. It redeploys automatically on every push to main that touches docs/.
To preview docs locally:
cd docs && npm install && npm start