AI SaaS Starter Stack (Container Edition)

Engineering & Development

A containerised starting point for an AI SaaS: sign-in and verification email (with a local inbox built in), the skeleton for subscription payments (Stripe / LemonSqueezy / Polar), an AI scheduling-assistant demo application, an admin area for users and revenue, and a blog; an init script writes the configuration and Docker Compose brings it up, with no Node or Wasp toolchain needed to start it (the build output is shipped with the package); payments and AI are optional and only work once you connect your own keys; a derivative build on top of a frozen snapshot of an MIT-licensed open-source SaaS template, with a quick-start and a common-errors guide in Traditional Chinese.

SubscriptionUS$49 per month
Last run2026-11-02
In practice
Readiness5 / 5
What you need
Few changes needed3 / 5

Who it is for

Independent developers and small teams building an AI SaaS: the upstream template is free, but there is a Wasp toolchain to learn and a deployment hurdle in the way.

How to start

$ sh scripts/quickstart/init-env.sh
$ docker compose up -d --wait

Browse the files

Files in the product repository at the pinned commit. A few house files are left out of the zip.

File overview2,000+ paths
▸docker2
client.Dockerfile
nginx.conf
▸opensaas-sh398
.gitignore
README.md
app_diff/
blog/
tools/
▸scripts1
quickstart/
▸template1557
.gitignore
README.md
app/
blog/
e2e-tests/
▸template-test10
.gitignore
README.md
app_diff/
tools/
▸tools3
README.md
dope.sh
wasp
▫ATTRIBUTION.md
▫CONTRIBUTING.md
▫LICENSE
▫LICENSE-99LL.md
▫PRODUCT.md
▫QUICKSTART.md
▫README.md
▫SECURITY.md
▫delivery-manifest.txt
▫docker-compose.yml
▫eslint.config.js
▫package-lock.json
▫package.json
▫prettier.config.ts
▫Config and hidden files 15

Latest passing run

Clone → Checkout → Toolchain → Build images → Up and see

Pre-purchase Disclosure

What you are buying

A containerised starting point for an AI SaaS: sign-in and verification email (with a local inbox built in), the skeleton for subscription payments, an AI demo application, an admin area and a blog. An init script writes the configuration and Docker Compose brings it up; starting it needs no Node or Wasp toolchain, because the build output ships with the package.

A derivative build on top of an MIT-licensed open-source SaaS template, not the original project itself.

Delivery is a frozen snapshot: one zip file, taken from the product repository at revision af4249a.

Known limitations

  • Payments, AI, file upload and analytics start with placeholder values; they only work once you connect your own third-party keys
  • The first start builds the images from source, fetching from npm and apk; a fully offline machine cannot complete the first start
  • With the default configuration, verification email only lands in the built-in local inbox and is not sent to a real address; sending for real means changing four SMTP keys
  • No TLS, and it runs over http by default; the front end’s API address is baked into the bundle at build time, so changing the address means rebuilding the front end
  • Every page loads an analytics script from plausible.io in its head (an upstream template default; the site id is a placeholder value)
  • Pinned to the delivered snapshot; it does not follow upstream.

The liability cap, the scope of what is promised and the statutory floor are governed by the Terms of Service.

Vetting record

Everything below was checked against the pinned commit cbd3016. Every verdict carries its full reasoning, an evidence link and the checker; failures are published, not hidden — do not take our word for it, verify it yourself.

5 PASS0 WARN0 FAIL

Source ReviewPASS

The delivered execution surface was reviewed item by item (in 2026): every file we added was read line by line (the four services in docker-compose.yml, client.Dockerfile, nginx.conf, init-env.sh, and one provider change in emailSender); the upstream TypeScript source and the .wasp/out build output were not read file by file, the basis being high adoption (the official Wasp template, run by the same people as opensaas.sh) and container isolation (db/mailpit are not exposed; only client/server/the mailpit UI open a port); every external service key needed to start it is a placeholder value.

Evidence ↗Checked in 2026Checked by claude-code build-product session B (in 2026)
Script SafetyPASS

Every script that runs on the buyer's delivery path was inspected one by one (in 2026): init-env.sh is ours (read line by line); the server image uses the Dockerfile generated by wasp 0.25.0 (read line by line: apk upgrade + npm install + prisma generate + rollup bundle, with no curl|sh style download-and-run); the client image uses our client.Dockerfile (npm install + npx vite build). npm install runs the lifecycle scripts of the dependencies — that supply surface is the same as any Node deployment.

Evidence is in our private repository (not publicly accessible):https://github.com/dev-zillio-cc/dsp-001-aisaas-starter-stack/blob/567bc827cf7b6583cc4228d51e542542f22522ce/template/app/.wasp/out/DockerfileChecked in 2026Checked by claude-code build-product session B (in 2026)
RecencyPASS

At the time of the check (in 2026) upstream was not archived and was maintained by the official Wasp team, and it still had new commits in the same month as the check; pinned commit cbd30162 was the main HEAD on the day the product repository was opened.

Evidence ↗Checked in 2026Checked by claude-code build-product session B (in 2026)
LicensePASS

SPDX:LicenseRef-99LL-Product

Upstream's LICENSE was read word for word (the evidence URL points at the file itself at the pinned commit): the standard 20-line MIT text, Copyright (c) 2023 wasp-lang — commercial use, modification, derivative works, redistribution and sale are permitted, and the obligation is to keep the copyright notice and the full licence text (LICENSE and ATTRIBUTION.md are delivered in the zip). This is not determined from GitHub's licence field. For the product as a whole, the 99LL product licence template is attached: upstream's LICENSE is kept verbatim, and LICENSE-99LL.md is added as the sale and liability terms for the part we built; spdx is recorded as LicenseRef-99LL-Product.

Evidence ↗Checked in 2026Checked by claude-code build-product session B (in 2026)
Dependency LicensesPASS

Third-party npm packages are not vendored into the zip: package.json only declares them, the buyer fetches them from the npm registry at build time, and the redistribution obligation sits with each publisher. Third-party content that is inside the zip: upstream's MIT source, and the build output and SDK of the Wasp framework (MIT) under .wasp/out, generated by wasp 0.25.0. The runtime base images (nginx:1.27-alpine, postgres:16, axllent/mailpit) are pulled by the buyer from the registry and are not redistributed in the zip.

Evidence ↗Checked in 2026Checked by claude-code build-product session B (in 2026)
HEALTH VERIFIED

Last verified passing: 2026-11-02

Subscribe for everything
US$49/ monthwas US$99

A subscription unlocks the whole catalogue; you do not buy this one separately.See what is included

Sign in with Google first; if you are signed out you will be sent to the sign-in page. Your subscription is billed to that same email address.

Already subscribed? This downloads straight away. Otherwise you are sent to the pricing page, or to sign in first.