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";
2
3import { MainPage } from "./src/MainPage" with { type: "ref" }; // <-- React
4import { getTasks } from "./src/tasks" with { type: "ref" }; // <-- Node.js
5
6export 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: true
19 })),
20 query(getTasks, {
21 entities: ["Task"] // <-- Automatic cache invalidation.
22 })
23 ]
24});
// 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 aware logic layer, 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});

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 more

Wasp CLI

All the handy commands at your fingertips.

Learn more

React / 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
React

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.

wasp GitHub profile picturewasp

CoverLetterGPT 🤖

Generate cover letters based on your CV and the job description. Powered by ChatGPT.

vincanger GitHub profile picturevincanger

Realtime voting via WebSockets 🔌

A realtime, websockets-powered voting app built with Wasp and TypeScript.

wasp GitHub profile picturewasp

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!