Web App Specification Language

A programming language that understands what a web app is.

Wasp is a declarative language for building full-stack web apps with less code.

Front-end, back-end and deployment - all in one concise DSL.

How it works

Given .wasp files as an input, Wasp generates the full source code of your web app - front-end, back-end and deployment.

Wasp can also be used along with the other types of source code files (.js(x), .css, ...).

The code is generated in one of the most popular web dev technology stacks and follows the industry best-practices.

Quick start

Create a production-ready web app from scratch with only a few lines of a concise, declarative code.

Flexible

Move fast using high-level constructs provided by Wasp or drop down to js/html/css/... when you require more control.

No lock-in

If Wasp becomes too limiting for you, simply eject and continue with the source code following industry best-practices, as if it was handwritten by a senior engineer.

The language

Concepts such as app, page, user, login, production etc. are baked into Wasp, providing the higher level of expressiveness.

Don't repeat yourself

Define how your data looks like only once - Wasp will generate for you all the needed back-end and front-end code!

                            
                        

Declarative approach

Write more specification and less implementation code. Wasp allows developers to express their app's requirements in a faster and safer way.

                            
                        

CRUD made easy

We know how much work it can be to implement a simple form - that is why Wasp offers a quick way to create and configure CRUD elements you will most often need.

                            
                        

Demo

In example below we used Wasp to create front-end of a Todo app.

In todoApp.wasp we defined our app, main page, data model for Task and CRUD components (form, list) tied to it.

Since Wasp is not yet expressive enough for all the features we need, we also have Todo.js, which is a React component in which we implement some additional logic on top of Task CRUD components, while we define style in main.css.

The output code was generated in React & Redux and you can check it out on our Github .

Input LoC

203

Output LoC

829

Wasp Inspector

Proof of Concept - Inspect your code within the web-app.

Wasp is a language that is compiled to the existing web technologies (e.g. React & NodeJS).
That allows us to embed features such as Inspector when compiled with the appropriate flag (e.g. --dev).

Below is a showcase example created in Wasp (learn how).
Turn Wasp Inspector on and click the "i" icon next to the element name to see what is "under the hood".

To learn how this example was created with Wasp click here.


Under the hood

Wasp produces a real, handwritten code in the world's most popular stack for web app development.

Jest

Try Wasp

Subscribe here and we will let you know when the alpha is ready!

In the meanwhile, check out Wasp repo on Github and express your support by giving us a star!

Team

We are twin brothers, Computer Science MScs, enthusiastic about clean code, functional programming, algorithms, Vim/Emacs, web development, open source, building a product, and hacking in general.

While profesionally doing web development we started imagining higher-level language that would abstract a lot of tedious work, and now we are on a mission to build it!

Frequently Asked Questions (FAQ)

Who is this for?

Wasp is for developers who need to build a web app with the relatively common requirements and want to focus on writing their unique logic instead of dealing with the project set up, dev ops, boilerplate code, … .

Why are you building Wasp?

You can learn more about our motivation and the journey so far in our first blog post .

What is the output of Wasp, how does it actually create a web app?

Wasp compiles your Wasp code into a source code of the chosen stack (for now React + Redux, Node + Express, Mongo), as if written by hand. You don’t have to know anything about or even look at the generated code while working with Wasp, but if at any moment you feel limited with Wasp and want to continue on your own with the generated code (eject), you can.

Is Wasp just a code generator?

No, the idea is that you write your app in Wasp and don’t care about generated code unless you have to leave Wasp due to it being too limiting. But, at an early stage of Wasp development, we do expect people to leave relatively early due to the lack of features, so in that sense it will serve a role of a smart code generator.

Are you supporting only JS / React / Node / Mongo? What about technology X?

For now yes, to speed up the development, but the intention is to also support other popular technologies in the future, so you would be able to choose your tech stack.

What if I can’t do something in Wasp? Can I extend it with my own logic?

Wasp is extensible by its nature, meaning that you can supplement Wasp code with the code of the tech stack it uses (React / Node / Mongo for now). If that is still not enough, you can eject from Wasp and continue with the generated code (which is as if hand-written with best practices) on your own.

Can I use Wasp in my already existing web app?

While there is no limit to human creativity :D, for now Wasp is intended to be used for creating a new web app from scratch.

What if I already have back-end and want just front-end?

That is ok, you will be able to implement just front-end with Wasp and use the existing back-end.

What stage are you in, when can I try out Wasp?

We are still very early (pre-alpha, check our repo for more details). You can subscribe to be notified once we release alpha, or to possibly even participate in the current development.

Does Wasp also handle deployment and different environments (staging, production)?

Yes! Wasp will be your dev-ops buddy :).

I am confused with the code example - how will I be able to do X in Wasp?

Current code example shows only a small part of what Wasp will be able to do, to give you an idea. If you would like to learn more as we progress or even be a part of how Wasp is shaped, you can subscribe here.

This sounds great, but I am skeptical that it can actually work.

We totally understand, there are hard challenges involved into building Wasp and we are even skeptical ourselves about some things! But, we are intent on giving our best try to make Wasp into something that you will love, and if you want to join us on this journey (and potentially even be an alpha user), you can subscribe here.