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.
1import { app, page, query, route } from "@wasp.sh/spec";23import { MainPage } from "./src/MainPage" with { type: "ref" }; // <-- React4import { getTasks } from "./src/tasks" with { type: "ref" }; // <-- Node.js56export default app({7 name: "todoApp",8 wasp: { version: "^0.24.0" },9 title: "ToDo App",10 head: ["<link rel='icon' href='/favicon.ico' />"],11 auth: { // Full-stack auth out-of-the-box.12 userEntity: "User",13 methods: { google: {}, gitHub: {}, email: {} },14 onAuthFailedRedirectTo: "/login"15 },16 spec: [17 route("RootRoute", "/", page(MainPage, {18 authRequired: true19 })),20 query(getTasks, {21 entities: ["Task"] // <-- Automatic cache invalidation.22 })23 ]24});
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 main.wasp.ts 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 in TypeScript
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!





