You've decided to build a SaaS app with the Open SaaS x Render template. Great choice.
This template is:
- fully open-source and free to use
- comes with a ton of features out of the box
- pre-configured for Render Blueprint deployments
Warning
This is a special version of Open SaaS designed for Render deployments. Do not use Wasp's built-in deploy commands, as they will not use this repo's Render Blueprint setup.
This repo contains the Open SaaS template folders and a root render.yaml Blueprint that creates:
- a PostgreSQL database
- a Node.js server Web Service
- a static React client Web Service
- Create a Render account.
- Push this repo to GitHub, GitLab, or Bitbucket.
- Install the Wasp CLI locally if you plan to develop the app:
npm i -g @wasp.sh/wasp-cli@latestRender builds the app from source, so you do not need to run wasp build locally before deploying. If you change the data model, run wasp db migrate-dev locally and commit the generated files in app/migrations/ before deploying.
The default render.yaml values are:
- app prefix:
open-saas-render - Render plan:
free - Render region:
oregon - Git branch:
main - Wasp CLI version:
0.24
Change these values in render.yaml before deploying if needed.
To deploy:
- In the Render Dashboard, click
New > Blueprint. - Connect your Git repository and select the branch containing
render.yaml. - Render will show the resources it will create. Do not fill out the environment variables form yet.
- Click
Apply.
The first deploy can fail while the services are being created because the public URLs are not known yet.
After Render creates the services, note their URLs. They usually look like:
https://open-saas-render-server.onrender.com
https://open-saas-render-client.onrender.com
On the open-saas-render-server Web Service, go to Settings > Environment and set:
WASP_SERVER_URL=https://open-saas-render-server.onrender.com
WASP_WEB_CLIENT_URL=https://open-saas-render-client.onrender.com
On the open-saas-render-client Static Site, go to Settings > Environment and set:
REACT_APP_API_URL=https://open-saas-render-server.onrender.com
Then save and rebuild both services.
Warning
REACT_APP_API_URL must be set before the client build runs because Vite embeds it into the compiled JavaScript.
If you enable integrations such as Google auth, payments, analytics, file uploads, AI features, or email sending, add their required environment variables to the relevant Render service too.
Render's free PostgreSQL database expires after 30 days. Use a paid Render plan or an external database provider for production.
Render auto-deploys when you push to the branch configured in render.yaml.
If you have new database model changes, run this locally first and commit the generated migration files:
cd app
wasp db migrate-dev- Install the Wasp CLI:
npm i -g @wasp.sh/wasp-cli@latest- Start the database:
cd app
wasp start db- In another terminal, start the app:
cd app
wasp start- Configure integrations using the Open SaaS Docs, including auth, payments, analytics, email sending, file uploads, and AI-assisted coding.
app- Your web app, built with Wasp.e2e-tests- Playwright tests for your Wasp web app.blog- Your blog and docs, built with Astro and Starlight.render.yaml- Render Blueprint for the database, server, and client.
The template is built on top of:
- Wasp - a full-stack React, Node.js, and Prisma framework
- Astro - blog and docs
- Stripe, Lemon Squeezy, or Polar - products and payments
- ShadCN UI - components and styling
- Plausible or Google Analytics - analytics
- OpenAI - AI example features
- AWS S3 - file uploads
- Mailgun, SendGrid, or SMTP - email sending
- Playwright - end-to-end tests