How we shipped a full-stack Wasp app on Zerops in minutes — and used the same path to publish Octoverse-style stats for 270+ WeMakeDevs × Zerops Challenge submissions.
Wasp already gives you the full stack in one repo: React client, Node.js API, Prisma, and auth. Zerops already gives you managed PostgreSQL, static hosting, Node runtimes, and a deploy model that treats “client + API + DB” as ordinary services.
Put them together and you stop fighting glue. You write the app. A single zerops.yaml tells the platform how to build the SPA, bundle the API, wire DATABASE_URL, and run migrations on deploy. That pattern lives in the official Wasp Hello World recipe — and it is exactly what we used to ship zerops-zcp-challenge-summary.
Live showcase: https://appstage-290f.prg1.zerops.app
One-click recipe: Deploy Wasp on Zerops
Why Wasp and Zerops fit
| Wasp concern | Zerops answer |
|---|---|
| React SPA | static service (Nginx) from wasp build + Vite output |
| Node API | nodejs@24 service serving the Wasp server bundle |
| PostgreSQL + Prisma | Managed postgresql@16 with ${db_*} → DATABASE_URL |
| Auth / cookies / CORS | Project-level APP_URL + API_URL mapped into Wasp env keys |
| Migrations | zsc execOnce on deploy so schema lands once per version |
Wasp wants two public URLs (web + API) and a Postgres connection string. Zerops speaks that language natively: two services, one database, cross-service references in YAML — no hand-rolled Docker Compose, no “how do I expose port 3001?” side quest.
Start from the recipe (really)
The recipe is not a toy dump. It is a production-shaped topology:
- Import — import.yaml creates app (static), api (Node), and db (PostgreSQL), plus project env for public URLs.
- Build — zerops.yaml defines three setups from one repo: prod-client, prod-api, and dev.
- Run — Client is static files; API starts the Wasp bundle on port 3001; init commands migrate (and optionally seed).
You can click Deploy on Zerops, get a running hello-world with demo login, then replace pages and entities with your product. That is the path we took.
What we built on top of it
zerops-zcp-challenge-summary is a public field report for the WeMakeDevs × Zerops Challenge — Octoverse-style, not a private admin tool. Build with ZCP.
It answers questions like:
- How many teams submitted? How many shipped a live Zerops URL, a repo, a social post?
- Which frameworks showed up most?
- Which official Zerops recipes did teams map to?
- Which Zerops services carried the load?
- Who won — and can the community browse and rank projects?
Product surface
| Route | Purpose |
|---|---|
| / | Overview KPIs, completeness, rankings, timeline |
| /projects | Browse and filter 270+ submissions |
| /projects/:slug | Project detail (repo, live, social, tags) |
| /ranked | Community ranking via email-gated likes |
| /winners | Headline, social, and credit winners |
Stack stayed the recipe stack: Wasp ^0.25, React, Prisma, PostgreSQL on Zerops, client on static, API on Node 24 (Ubuntu) so Prisma’s native engine has OpenSSL without Alpine workarounds.
From hello-world to challenge summary
Roughly the loop we ran:
- Adopt / deploy the Wasp recipe topology — static app, Node API, Postgres.
- Keep zerops.yaml structure — build commands, Ubuntu for API, readiness check, URL mapping.
- Replace the domain model — Submission + Vote, seed from challenge export JSON.
- Ship product pages — overview charts, filters, detail, ranking, winners.
- Promote through stages — appdev / apidev for iteration, appstage / apistage for the public link above.
We did not rewrite how Wasp deploys. We reused the recipe contract and spent the time on the product.
Try it yourself
- Open the Wasp Hello World recipe.
- Deploy the small-production environment (or start from the recipe app repo).
- Confirm client + API + DB come up with the demo user.
- Swap in your entities, pages, and seeds — leave the Zerops wiring alone until you need a second database or cache.
When you want a concrete example of “recipe → real app,” open the challenge summary:
zerops-zcp-challenge-summary on Zerops
270+ submissions, live rankings, winners — full-stack Wasp, managed Postgres, static + API on Zerops, no custom PaaS fairy dust.
Useful Links
- Recipe: https://app.zerops.io/recipes/wasp-hello-world
- Recipe app repo: https://github.com/zerops-recipe-apps/wasp-hello-world-app
- Wasp: https://wasp.sh
- Zerops: https://zerops.io
- Showcase: https://appstage-290f.prg1.zerops.app



Top comments (0)