You've decided to build a SaaS app with the Open SaaS x OpenShip template. Great choice!
This template is:
- fully open-source & free to use
- comes with a ton of features out of the box
- is pre-configured for instant OpenShip deployments
Warning
This is a special version of Open SaaS designed for instant OpenShip deployments.
Do not use Wasp's built-in deploy commands as it will interfere with your OpenShip setup.
This template ships with a docker-compose.yml that defines three services — server, client, and db — built from the Dockerfiles in the openship/ directory. OpenShip reads that file and deploys the whole stack for you.
- Create a project in OpenShip and connect this repository (or your fork of it).
- OpenShip parses
docker-compose.ymland creates theserver,client, anddbservices for you. - Expose the
serverandclientservices and assign each a public domain. - Set the required environment variables (see the comments in
docker-compose.yml):- On the
serverservice: setWASP_SERVER_URLandREACT_APP_API_URLto the server's domain,WASP_WEB_CLIENT_URLto the client's domain, and a realJWT_SECRET(32+ random chars). - On the
clientservice: setREACT_APP_API_URLto the server's domain. This value is baked into the client at build time, so set it before the client's first successful build.
- On the
- Deploy. On each push to
main, OpenShip rebuilds and redeploys your services with zero downtime. 🚀
Note
The dummy payment/auth/analytics values in docker-compose.yml just let the server boot. Swap in real keys for the features you actually use.
Fork or clone this repository into your own GitHub account, then connect that repo to OpenShip:
git clone https://github.com/<your-user-name>/open-saas-openship.gitNow you can start building your SaaS app locally. When you push a new commit to main, OpenShip will automatically deploy your changes! 🚀
1️⃣ Install the Wasp CLI:
npm i -g @wasp.sh/wasp-cli@latestRead the Installation Instructions for more details (prerequisites, installing on Windows).
2️⃣ Start the app by reading the Getting Started Docs.
3️⃣ Although the app will run, you'll need to set up the integrations to get all its functionality. The Open SaaS Docs contain detailed guides on setting up:
- Auth,
- Payments,
- Analytics,
- Email Sending,
- AI-assisted coding,
- and more.
Warning
Remember that this version of Open SaaS is pre-configured for instant OpenShip deployments.
Because of this, the deployment features via the Wasp CLI should not be used.
Just simply push to main on your instance's GitHub repo and OpenShip will automatically deploy your changes!
This template consists of three main dirs:
app- Your web app, built with Wasp.e2e-tests- Playwright tests for your Wasp web app.blog- Your blog / docs, built with Astro based on Starlight template.
The openship/ dir contains the Dockerfiles and Caddyfile used to build and serve the app on OpenShip, wired together by the root docker-compose.yml.
For more details, check READMEs of each respective directory!
The template itself is built on top of some very powerful tools and frameworks, including:
- 🐝 Wasp - a full-stack React, NodeJS, Prisma framework with superpowers
- 🚢 OpenShip - open-source deployment platform for instant, zero-downtime deploys
- 🚀 Astro - Astro's lightweight "Starlight" template for documentation and blog
- 💸 Stripe or Lemon Squeezy (with Polar.sh and Paddle coming soon!) - for products and payments
- 💅 ShadCN UI - for components & styling (plus admin dashboard!)
- 🤖 AI-Ready - full set of Cursor rules & llms-full.txt for ai-assisted coding
- 📈 Plausible or Google Analytics
- 🤖 OpenAI - OpenAI API w/ function calling example
- 📦 AWS S3 - for file uploads
- 📧 SendGrid, MailGun, or SMTP - for email sending
- 🧪 Playwright - end-to-end tests with Playwright
Because we're using Wasp as the full-stack framework, we can leverage a lot of its features to build our SaaS in record time, including:
- 🔐 Full-stack Authentication - Email verified + social Auth in a few lines of code.
- ⛑ End-to-end Type Safety - Type your backend functions and get inferred types on the front-end automatically, without the need to install or configure any third-party libraries. Oh, and type-safe Links, too!
- 🤖 Jobs - Run cron jobs in the background or set up queues simply by defining a function in the config file.
- 🚀 One-command Deploy - Wasp can also deploy your DB, Server, & Client with one command to Railway or Fly.io via the CLI. Note that this template uses OpenShip instead — see the deployment section above.
You also get access to Wasp's diverse, helpful community if you get stuck or need help.
There are two ways to get help or provide feedback (and we try to always respond quickly!):
- Open an issue
- Wasp Discord -- please direct questions to the #🙋questions forum channel