A truly full-stack TypeScript framework that just works.
React, Node.js, and Prisma — wired together with auth, jobs, and deployment built in. Ship in a day and own every line.Designed for humans, works beautifully with AI.
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}
01High Level
A uniquely powerful config layer serves as a backbone that connects all parts of the stack - frontend, backend, database, and deployment.
02Batteries: Included
Like Rails and Laravel, focus on your app, not your framework. Auth, jobs, email, deploy and much more built in.
03Fully Yours
Open source, no lock-in. No third-party provider or cloud platform dependency. Host anywhere.
Instead of wiring everything yourself, Wasp gives you a cohesive set of full-stack features so you can focus on what makes your app unique.
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!





