Develop your full-stack app fast and keep control.
Rails-like framework for React, Node.js and Prisma. Build your app in a day and deploy it with a single CLI command.
1app todoApp {2 wasp: { version: "^0.23.0" },3 title: "ToDo App",4 auth: {5 userEntity: User,6 methods: { google: {}, gitHub: {}, email: {} },7 onAuthFailedRedirectTo: "/login"8 }9}1011route RootRoute { path: "/", to: MainPage }12page MainPage {13 authRequired: true,14 component: import { MainPage } from "@src/MainPage" // <-- React15}1617query getTasks {18 fn: import { getTasks } from "@src/tasks", // <-- Node.js19 entities: [Task] // <-- Automatic cache invalidation.20}
1model User {2 id Int @id @default(autoincrement())3 email String @unique4 tasks Task[]5}67model Task {8 id Int @id @default(autoincrement())9 description String10 isDone Boolean @default(false)11 user User @relation(fields: [userId], references: [id])12 userId Int13}
1import { getTasks, useQuery } from "wasp/client/operations"23export function MainPage() {4 const { data: tasks } = useQuery(getTasks)56 return (7 <div>8 <h1>Tasks</h1>9 {tasks?.map(task => (10 <div key={task.id}>{task.description}</div>11 ))}12 </div>13 )14}
1import { type GetTasks } from "wasp/server/operations"2import { HttpError } from "wasp/server"3import { Task } from "wasp/entities"45export const getTasks: GetTasks<void, Task[]> = async (_args, context) => {6 if (!context.user) throw new HttpError(401)78 return context.entities.Task.findMany({9 where: { user: { id: context.user.id } },10 orderBy: { id: "desc" },11 })12}
- Full-stack Auth
- RPC (Client <-> Server)
- Simple Deployment
- Jobs
- Full-stack Type Safety
- And More!
Add login with social providers or email in a few lines of code with powerful UI helpers. No third party vendor lock-in.
Wasp provides a typesafe RPC layer that instantly brings your data models and server logic to the client.
Deploy your app to any platform. Wasp offers CLI helpers for the most popular options.
Easily define, schedule and run specialized server tasks. Persistent, retryable, delayable.
Full support for TypeScript with auto-generated types that span the whole stack.
Custom API routes, database seeding, optimistic updates, automatic cache invalidation on the client, ...
How does it work? 🧐
Given a simple .wasp configuration file that describes the high-level details of your web app, and .js(x)/.css/..., source files with your unique logic, Wasp compiler generates the full 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 super powers!
Simple config language
Declaratively describe high-level details of your app.
Learn moreWasp CLI
All the handy commands at your fingertips.
Learn moreReact / Node.js / Prisma
You are still writing 90% of the code in your favorite technologies.
Goodbye boilerplate
Write only the code that matters, let Wasp handle the rest.
Learn more

Show, don't tell.
Take a look at examples - see how things work and get inspired for your next project.
Todo App (TypeScript) ✅
A famous To-Do list app, implemented in TypeScript.
CoverLetterGPT 🤖
Generate cover letters based on your CV and the job description. Powered by ChatGPT.
Realtime voting via WebSockets 🔌
A realtime, websockets-powered voting app built with Wasp and TypeScript.
You're in a good crowd
Here's what folks using Wasp say about it. Join our Discord for more!
🏆 Showcase Gallery 🏆
See what others are building with Wasp.
Stay up to date 📬
Be the first to know when we ship new features and updates!
🚧 Roadmap 🚧
Work on Wasp never stops: get a glimpse of what is coming next!
Frequently asked questions
For anything not covered here, join our Discord!





