wasp
Wasp is a Rails-like, declarative full-stack web framework that uses a high-level spec file to generate a React + TanStack Query frontend, Node.js/Express backend, and Prisma database layer — handling auth, RPC, jobs, and deployment with minimal boilerplate.
MITPermissive — free to use in commercial and proprietary software, with attribution.View license →
Production readiness
5/5- Actively maintainedCommits in the last 6 months
- No known vulnerabilitiesNo OSV advisories
- Clear, usable licenseMIT (permissive)
- Proven adoptionWidely used
- Has documentationDocumentation indexed
npm install wasp-repoOur analysis
Wasp is a full-stack web framework built around a declarative spec file (main.wasp.ts) plus Prisma schema; its compiler generates the boilerplate for a React/TanStack Query frontend and Node.js/Express backend, while you write your unique business logic in plain TS/JS.
When to use wasp
Good for solo developers or small teams who want to ship CRUD-heavy, auth-gated full-stack apps fast without wiring together auth, RPC, caching, jobs, and deployment by hand. Its high-level spec also makes it a strong fit for AI-assisted coding where structured guardrails reduce hallucinated boilerplate.
When not to
If you need a non-React/Node stack, fine-grained control over the framework internals, or are building something that doesn't fit the opinionated CRUD/auth pattern, a lower-level framework like Next.js or Remix gives more flexibility. Teams wary of an extra compilation layer and a still-beta DSL may prefer mainstream meta-frameworks.
Strengths
- Eliminates large amounts of full-stack boilerplate (auth, RPC, cache invalidation, jobs) from a concise spec
- End-to-end type safety from server operations to client
- No vendor lock-in — generated code lives in .wasp/ and deploys anywhere
- Opinionated structure pairs well with AI coding agents and has official plugins
- Single-command deployment lowers ops friction
Trade-offs
- Adds a compiler/DSL layer that must be learned and can obscure what's actually generated
- Locked to a single stack (React + TanStack Query, Express, Prisma) for now
- Still in beta with expected breaking changes between versions
- Core compiler is written in Haskell, raising the bar for deep contributions or debugging
- Less escape-hatch flexibility than assembling the stack yourself
Maturity
Actively developed with a large community (18k+ stars), official docs, Discord, and AI agent plugins, but self-described as beta with an evolving spec and ongoing breaking changes. Production deployments exist (the team runs a swag program for them), so it's usable but not yet 1.0-stable.
What is Wasp?
Wasp (Web Application Specification) is a Rails-like framework for React, Node.js, and Prisma. Build your app in a day and deploy it with a single CLI command!
Why is Wasp awesome
🚀 Quick start: Due to its expressiveness, you can create and deploy a production-ready web app from scratch with very few lines of concise, consistent, declarative code.
😌 No boilerplate: By abstracting away complex full-stack features, there is less boilerplate code. That means less code to maintain and understand! It also means easier upgrades.
🔓 No lock-in: You can deploy the Wasp app anywhere you like. There is no lock-in into specific providers; you have complete control over the code (and can actually check it out in
.wasp/directory if you are interested ).🤖 Perfect for AI by design: Thanks to its high-level spec of the whole app, opinionated approach, built-in full-stack features, and tight integration of all parts of the stack, Wasp gives AI (agents) clear guardrails and structure, less boilerplate to manage, and better context management.
Features
...
Code example
Simple Wasp spec file in which you describe the high-level details of your web app:
// file: main.wasp.ts
import { app, page, query, route } from "@wasp.sh/spec";
import { MainPage } from "./src/MainPage" with { type: "ref" }; // Your React code.
import { DashboardPage } from "./src/dashboard/DashboardPage" with { type: "ref" };
import { getTasks } from "./src/queries" with { type: "ref" }; // Your Node.js code.
export default app({
name: "todoApp",
wasp: { version: "^0.24.0" },
title: "ToDo App",
head: ["<link rel='icon' href='/favicon.ico' />"],
auth: {
// Full-stack auth out-of-the-box.
userEntity: "User",
methods: {
email: {
// ...
},
google: {
// ...
},
},
onAuthFailedRedirectTo: "/login",
},
spec: [
route("RootRoute", "/", page(MainPage)),
route(
"DashboardRoute",
"/dashboard",
page(DashboardPage, {
authRequired: true, // Limit access to logged-in users.
}),
),
query(getTasks, {
entities: ["Task"], // Automatic cache invalidation.
}),
],
});
And a Prisma schema for the database:
// file: schema.prisma
model Task { // Your Prisma data model.
id Int @id @default(autoincrement())
description String
isDone Boolean @default(false)
}
The rest of the code you write in React / Node.js and reference it from the *.wasp.ts files.
👉 Check out TodoApp example for a complete code example. 👈
How it works
Given a simple main.wasp.ts specification file that describes the high-level details of your web app, and .ts(x)/.css/..., source files with your unique logic, Wasp compiler generates the whole source of your web app in the target stack: front-end, back-end and deployment.
This unique approach is what makes Wasp "smart" and gives it its superpowers!
For more information about Wasp, check docs.
Get started
Run to install Wasp on OSX/Linux/WSL(Win):
npm i -g @wasp.sh/wasp-cli@latest
From there, follow the instructions to run your first app in less than a minute!
For a quick start, check out this docs page.
Have a Wasp app deployed? - we will send you swag!
If you have a Wasp application running in production, we'd love to send some swag your way! Fill out this form, and we'll make it happen.
AI Agent Plugins
Wasp has official AI agent plugins to help you kickstart your next Wasp project. You can use them with your favorite AI-assisted coding tool (Cursor, Claude Code, etc.) to get a better result and development experience. Check out the Wasp Agent Plugins page for more details.
Project status
Currently, Wasp is in beta, with most features fully developed and functioning well. However, we still have many improvements and additions in mind for the future, and we are continually working on them. As a result, you can expect numerous changes and improvements in the future.
Keep up with Wasp by following our development roadmap.
While the idea is to support multiple web tech stacks in the future, we are currently focusing on a specific stack: React + TanStack Query, Node.js + Express.js, and Prisma.
Contributing
Any way you want to contribute is a good way :)!
The best place to start is to check out waspc/, where you can find detailed steps for first-time contributors + technical details about the Wasp compiler.
The core of Wasp is built in Haskell, but there are also a lot of non-Haskell parts of Wasp, so you will certainly be able to find something for you!
Even if you don't plan to submit any code, just joining the discussion on Discord and giving your feedback is already great and helps a lot (motivates us and helps us figure out how to shape Wasp)!
You can also:
⭐️ Star this repo to show your interest/support.
📫 Stay updated by subscribing to our email list.
👀 Check out the development roadmap.
Careers
Check our careers page for a list of currently opened positions!
Sponsors
- Our first sponsor ever! Thanks so much, Michel ❤️ , from the whole Wasp Team, for bravely going where nobody has been before :)!
- Thanks Shayne, for all the contributions you did so far and for your continuous support!
- Thanks VelocityOne for the generous donation!
- We are thankful for your support Ricardo in this early stage of Wasp :)!
- Thanks Thomas for supporting Wasp :)!
- Our awesome sponsor again and again!
- Big thanks for supporting us both via sponsorship and great suggestions!
Past sponsors