Guide · Open source
How to use Wasp: install the CLI and build a full-stack app
Updated · written with AI from the project's own documentation and checked against our catalogue data
Wasp (Web Application Specification) is an open-source framework for building JavaScript and TypeScript web apps with React, Node.js and Prisma. You describe the main parts of your app in a spec file, and Wasp generates the front-end, back-end and deployment code. This guide shows you how to install the Wasp CLI, read the spec and data model, and understand what you get out of the box.
Quick start
- 1Check Node.js. Make sure Node.js is installed, since it is the listed prerequisite.
- 2Install the Wasp CLI. Run npm i -g @wasp/cli@latest to install the CLI globally.
- 3Open the quick start. Follow the quick start page at wasp.sh/docs/quick-start to create your first app.
- 4Write the spec. Describe your app's name, routes, pages, queries and auth in main.wasp.ts.
- 5Define the data model. Add your entities to schema.prisma and reference them from your queries.
- 6Write the React and Node.js code. Create your page components and server functions, then reference them from the spec with type: "ref".
- 7Deploy. Use the Wasp deployment docs to ship your app to the provider you choose.
Install the Wasp CLI
Wasp is installed with npm. The README lists Node.js as the prerequisite. Install the CLI globally with the command below, which works on OSX, Linux and WSL.
After installing, the README says to follow the instructions in the Wasp docs quick start page to run your first app. It states this takes less than a minute.
- Prerequisite: Node.js
- Command runs on OSX, Linux and WSL (the README also says WSL on Windows)
npm i -g @wasp/cli@latestUnderstand the main.wasp.ts spec file
The spec file describes the high-level details of your app. In the README example it is named main.wasp.ts and imports app, page, query and route from @wasp/spec. Your React and Node.js code lives in normal .ts(x) files, which you reference from the spec with type: "ref".
The example declares an app name, a title, a login-enabled auth block with an email method and a Google method, and two routes. The root route renders MainPage, and the /dashboard route uses authRequired: true to limit access to logged-in users.
- app sets the name, title and auth settings
- route maps a URL path to a page
- page can set authRequired to restrict access
- query references a Node.js function and can list entities for automatic cache invalidation
Define your data with a Prisma schema
Wasp uses Prisma for the database. You define your data model in a schema.prisma file. The README example defines a Task model with an integer id that auto-increments, a description string and an isDone boolean that defaults to false.
Entities you name in the spec, such as Task in the query example, are linked to these Prisma models.
model Task {
id Int @id @default(autoincrement())
description String
isDone Boolean @default(false)
}Use the built-in full-stack features
Wasp's README lists features you would otherwise wire up by hand: full-stack auth, RPC between client and server, email sending, background jobs and end-to-end type safety. Auth is configured in the app block, for example with userEntity and methods such as email and google, plus onAuthFailedRedirectTo for redirects.
You write the logic in your React and Node.js files and let the spec connect them. The README says the compiler generates the front-end, back-end and deployment source from your spec and source files.
- Full-stack auth (configured in the app spec)
- RPC between client and server through queries
- Jobs, email sending and end-to-end type safety are listed as features in the README
Deploy and inspect the generated code
The README describes deployment as a single CLI command, and says you can deploy a Wasp app to any provider you like. Wasp generates its output into a .wasp/ directory, which you can open to read the generated code.
The README describes Wasp as in beta. Check the docs for the current deployment methods before you ship to production.
- Deploy with the CLI; the README does not list the specific command, so check the docs
- Generated code is in the .wasp/ directory
What people use it for
- A solo builder creating a full-stack React and Node.js app with login and a protected dashboard
- A small team that prefers convention over configuration and wants less wiring code
- A developer who already knows React and Prisma and wants less glue code between them
- A team using AI coding agents that needs a structured project layout with clear guardrails
Frequently asked questions
Is Wasp free and open source?
Yes. The repository is licensed under the MIT license, and the README lists TypeScript as the main language.
What do I need to install Wasp?
The README lists Node.js as the prerequisite. You then install the CLI with npm i -g @wasp/cli@latest.
Is Wasp production ready?
The README says Wasp is in beta, with most features fully developed and functioning well. It also says you can expect numerous changes in the future, so weigh that before a production launch.
What stack does Wasp use?
Wasp focuses on React with TanStack Query, Node.js with Express.js, and Prisma. The README says the project aims to support other stacks in the future but currently focuses on this one.
How does Wasp compare to Next.js or Ruby on Rails?
Wasp describes itself as a Rails-like framework for React, Node.js and Prisma. Next.js and RedwoodJS are other full-stack JavaScript options, and Ruby on Rails is the convention-driven model Wasp follows. Pick based on your stack and how much control you want.
Can I deploy a Wasp app anywhere?
The README says there is no lock-in to specific providers, and you can deploy the app wherever you like. Check the docs for the deployment methods that are available.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
Wasp suits developers and small teams who already use React, Node.js and Prisma and want less boilerplate and a convention-based layout. It is a poor fit if you need a different stack, a framework marked production-stable, or full manual control over every layer.
Install options & downloads