Launch Week #12 β€” TS SpecKickoff Mon, Jun 15 β†’

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";
2import { MainPage } from "./src/MainPage" with { type: "ref" };
3import { getTasks } from "./src/tasks" with { type: "ref" };
4
5export default app({
6 wasp: { version: "^0.24.0" },
7 title: "ToDo App",
8 auth: { // Full-stack auth out-of-the-box.
9 userEntity: "User",
10 methods: { google: {}, gitHub: {}, email: {} },
11 onAuthFailedRedirectTo: "/login"
12 },
13 spec: [
14 route("RootRoute", "/", page(MainPage, {
15 authRequired: true
16 })),
17 query(getTasks, {
18 entities: ["Task"] // Automatic cache invalidation.
19 })
20 ]
21});
// properties

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.

// features

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.

... see all in the docs

Define your app via a specialized full-stack logic layer in TypeScript, using high-level terms like app, route, page, ... . Think framework config, but taken to a whole new level.

main.wasp.ts
1import { app, job, page, query, route } from "@wasp.sh/spec";
2
3import { AdminDashboard } from "./src/admin/Dashboard" with { type: "ref" };
4import { dailyDigest, getMetrics } from "./src/admin/ops" with { type: "ref" };
5import { HomePage } from "./src/pages/Home" with { type: "ref" };
6
7export default app({
8 name: "todoApp",
9 title: "ToDo App",
10 wasp: { version: "^0.24.0" },
11 head: ["<link rel='icon' href='/favicon.ico' />"],
12 auth: {
13 userEntity: "User",
14 methods: { email: {}, google: {} },
15 onAuthFailedRedirectTo: "/login"
16 },
17 spec: [
18 route("HomeRoute", "/", page(HomePage)),
19 route(
20 "AdminRoute",
21 "/admin",
22 page(AdminDashboard, { authRequired: true })
23 ),
24 query(getMetrics, { entities: ["Task", "User"] }),
25 job(dailyDigest, {
26 executor: "PgBoss",
27 schedule: { cron: "0 7 * * *" }
28 })
29 ]
30});
// example apps

Reference implementations to learn from, fork, or deploy. Each one shows a complete Wasp app. Read the code, run it locally, ship it your way.

// join the community

Real builders, real apps, real conversations. Drop into Discord to ask questions, share what you're working on, or just hang out.

// how it works

You write your app as high-level config in *.wasp.ts files, alongside the usual React, Node, and Prisma code. Wasp compiles it into a full-stack app, ready to deploy anywhere.

YOUR CODE*.wasp.ts*.tsx*.tsschema.prismaDockerfileCOMPILEWASP CLIintermediaterepresentationGENERATEGENERATED CODEfrontendReactbackendNodedatabasePrismaDEPLOYFly Β· Railway Β· your VPS

You can read the generated code, but treat it like any compiler output. Change the source, not the output.

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!

Roadmap

Frequently asked questions

For anything not covered here, joinΒ our Discord!