TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Launch HN: Wasp (YC W21) – DSL for building full-stack web apps

222 pointsby matijashover 4 years ago
Hi HN!<p>We are Martin and Matija, twin brothers and creators of Wasp (<a href="https:&#x2F;&#x2F;wasp-lang.dev" rel="nofollow">https:&#x2F;&#x2F;wasp-lang.dev</a>). Wasp is a declarative language that makes it really easy to build full-stack web apps while still using the latest technologies such as React, Node.js and Prisma.<p>Martin and I both studied computer science where we mostly focused on algorithms for bioinformatics. Afterwards we led engineering teams in several SaaS companies, on the way gaining plenty of experience in building web apps.<p>Moving from one project to another, we used various technologies: JQuery -&gt; Backbone -&gt; Angular -&gt; React, own scripts &#x2F; makefile -&gt; Grunt -&gt; Gulp -&gt; Webpack, PHP -&gt; Java -&gt; Node.js, … , and we always felt that things are harder than they should be. We were spending a lot of time adopting the latest tech stack and figuring out the best practices: how to make the web app performant, scalable, economical and secure and also how to connect all the pieces of the stack together.<p>While the tech stack kept advancing rapidly, the core requirements of the apps we were building changed very little (auth, routing, data model CRUD, ACL, …). That is why about 1.5 years ago we started thinking about separating web app specification (what it should do) from its implementation (how it should do it).<p>This led us to the idea of extracting common web app features and concepts into a special specification language from which we could generate code in the currently popular technologies. We don’t think it is feasible to replace everything with a single language so that is why we went with a DSL which integrates with the modern stack (right now React, NodeJS, Prisma).<p>Wasp lets you define high-level aspects of your web app (auth, routing, ACL, data models, CRUD) via a simple specification language and then write your specific logic in React and Node.js. The majority of the code is still being written in React and Node.js, with Wasp serving as the backbone of your whole application. To see some examples of what the language looks like in practice, take a look here: <a href="https:&#x2F;&#x2F;github.com&#x2F;wasp-lang&#x2F;wasp&#x2F;blob&#x2F;master&#x2F;examples&#x2F;tutorials&#x2F;TodoApp&#x2F;main.wasp" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;wasp-lang&#x2F;wasp&#x2F;blob&#x2F;master&#x2F;examples&#x2F;tutor...</a><p>The main difference between Wasp and frameworks (e.g. Meteor, Blitz, Redwood) is that Wasp is a language, not a library. One benefit of that is a simpler and cleaner, declarative syntax, focused on the requirements and detached from the implementation details.<p>Another benefit of a DSL is that it allows Wasp to understand the web app’s requirements during the build time and reason about it before generating the final code. For example, when generating code to be deployed to production, it could pick the most appropriate architecture based on its understanding of the web app and deploy it to serverless or another type of architecture (or even a combination). Another example would be reusing your data model logic through all the parts of the stack while defining it just once in Wasp. DSL opens the potential for optimisations, static analysis and extensibility.<p>Wasp’s compiler is built in Haskell and it compiles the source code in Wasp + React&#x2F;Node.js into the target code in just React and Node.js (currently in Javascript, but we plan to move to Typescript soon). The generated code is human readable and can easily be inspected and even ejected if Wasp becomes too limiting.<p>We are currently in Alpha and many features are still rough or missing, but you can try it out and build and deploy web apps! There are things we haven’t solved yet and others that will probably change as we progress.<p>You can check out our repo at <a href="https:&#x2F;&#x2F;github.com&#x2F;wasp-lang&#x2F;wasp" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;wasp-lang&#x2F;wasp</a> and give it a try at <a href="https:&#x2F;&#x2F;wasp-lang.dev&#x2F;docs&#x2F;" rel="nofollow">https:&#x2F;&#x2F;wasp-lang.dev&#x2F;docs&#x2F;</a>.<p>Thank you for reading! We would love to get your feedback and also hear about your experiences building web apps - what has worked for you and where do you see the opportunities for improvement?

27 comments

ignoramousover 4 years ago
&gt; <i>...understand the web app’s requirements during the build time and reason about it before generating the final code. For example... it could pick the most appropriate architecture based on its understanding of the web app and deploy it to serverless or another type of architecture.</i><p>Wowzer! For me, this is the main benefit. I&#x27;m a big believer in low-code platforms like darklang, because the fundamental truth that bugs are a function of both SLoC and underlying infrastructure is never going to change, and one solution to that is to <i>automate</i> as much of it as possible.<p>The only problem I see is that these automations that eliminate code and abstract away the infrastructure often result in a new class of harder-to-debug or worse never-seen-before bugs. And so, building a language that &quot;solves software engineering&quot; may require a <i>lot</i> of patience and perseverance. With that in mind, how long do you plan to keep at it? How long term are you thinking you&#x27;d be doing this? I mean, you could still be working on wasp-lang whilst working full-time elsewhere... but then, that requires a different level of commitment when the business around it has failed.<p>&gt; <i>Wasp’s compiler is built in Haskell</i><p>Two questions, if I may: Why Haskell? Did you also consider OCaml (à la Rust) at some point?<p>Edit: I see wasp-lang is MIT licensed. Why not Apache v2 (or even MPL v2)? Especially since MIT lacks patent-grants clause.<p>Excited to see how wasp-lang evolves. Thanks!
评论 #26093561 未加载
abraxasover 4 years ago
I get the sentiment. I understand the problem. The amount of disjointed tools that need to be strung together to build the proverbial todo list in the modern web ecosystem is beyond ridiculous. So much so that most of the people at my company seem to be spending most of their time adopting tools rather than building software.<p>What I quibble with is your solution. This is another layer on this cake of complexity that tries to hide the ugliness beneath rather than truly simplify. This sort of wrapping is rarely successful because eventually one of the underlying bits refuses to do its thing just as you’d hope and the house of cards comes tumbling down.<p>I don’t think the crappiness of the cloud and webdev “stacks” can be rectified without a do over. I think it may need a rethink from the OS all the way up. Maybe right down to the hardware layer.<p>I don’t think what’s there now is salvageable if we are hoping for a true shift in productivity.
评论 #26096808 未加载
catchmeifyoucanover 4 years ago
This seems really awesome. I read the sample project, and was able to understand it really fast. It honestly would make our engineer onboarding really fast! Since it&#x27;s all in one simple place. And the architecture is standardized.<p>The authentication model is what I liked most.<p>I think the biggest blocker is the use of Prisma however. I&#x27;ve never heard of Prisma before, and I&#x27;d have no problem using it. But I use DynamoDB for practically everything, not sure how that translates to that world.<p>The second concern is that most of projects are written in Typescript. I&#x27;m not sure how this works with TS. I&#x27;d hate to write an entity twice - for example, a user entity, and a user interface in TS. Because they have to be typed anyways.
评论 #26093551 未加载
评论 #26093527 未加载
momotherealover 4 years ago
Looks cool!<p>Do you have any examples or have experience with larger projects? For example, my React app has dozens of pages and some complex routing, and the backend has 50+ endpoints and talks to different databases, RabbitMQ, etc.<p>When I see &quot;shoe that fits all&quot; solutions like this I&#x27;m honestly skeptical about the degree of freedom I get for more complex architecture needs. I&#x27;ve found frameworks like Next.js usually give you the freedom you need because it&#x27;s basically pure JS.<p>Also, this seems like it has a good opportunity to automatically integrate e2e&#x2F;integration testing.
评论 #26092606 未加载
vinodkdover 4 years ago
I love new languages, and I love that you have all the basic elements of webapps as first class citizens.<p>....and then I saw that the page is still written using React and db access uses Prisma. They are not dependencies, you have to now about them, and their syntax and how they work.<p>What is the incentive for me as a developer to learn both them <i>and</i> wasp? Especially since there are multiple places where the wasp layer is a thin layer over the underlying capability supported by those dependencies.<p>Dont get me wrong. I say go bigger and make it a full-fledged DSL that generates react and prisma code without making them __visible at all__. That way nobody has to learn anything but wasp. Sure, you will be limited by whatever your underlying implementation layer is, but you can now switch from them easier, and its likely to last longer (there __was__ a time before React, and like will be one after too).<p>Can you be the +1 layer that people dont have to look under? More specifically:<p>1. Can you have inline .js files? Even better: Can you bring the page content _into_ wasp&#x27;s syntax? It currently says a webapp has pages and routes, how about expanding to say a webapp has components, elements and text?<p>2. Same question for storage schemas and migrations. Would that help with NoSQL integrations (vs expecting Prisma to support them)?<p>3. Can you eliminate the &quot;Note:&quot; sections in <a href="https:&#x2F;&#x2F;wasp-lang.dev&#x2F;docs&#x2F;language&#x2F;basic-elements" rel="nofollow">https:&#x2F;&#x2F;wasp-lang.dev&#x2F;docs&#x2F;language&#x2F;basic-elements</a>? Those are the leaks in the abstraction called wasp. And if the answer is no, then should there be a better abstraction?
评论 #26098172 未加载
hopiaover 4 years ago
I thought you were on to something really nice last year, and left you a long list of feedback on Indiehackers: <a href="https:&#x2F;&#x2F;www.indiehackers.com&#x2F;post&#x2F;launched-landing-page-for-a-programming-language-that-we-are-building-looking-for-feedback-6a08e165e8" rel="nofollow">https:&#x2F;&#x2F;www.indiehackers.com&#x2F;post&#x2F;launched-landing-page-for-...</a><p>Nothing makes me happier than seeing you guys having come so far since then and having stayed so determined!
评论 #26094796 未加载
bgdnpnover 4 years ago
I have been thinking of something similar for the last few weeks: most apps are 80% the same components (as you were saying &quot;auth, routing, data model CRUD, ACL&quot;), but these get re-written or at least re-engineered again and again.. wouldn&#x27;t it be cool to define your apps&#x27; main components as a sort of DSL and then generate a starting poitn? And here you are. This is so interesting.<p>Would love to have a short chat about this in the near future, if you have time!
评论 #26094860 未加载
评论 #26095005 未加载
yaseerover 4 years ago
This is pretty neat. Programming languages are about working with the correct abstractions for your problem domain.<p>It&#x27;s about time we had a high level DSL for working with web abstractions.
评论 #26092819 未加载
mwcampbellover 4 years ago
Can we try a demo app somewhere, without having to build it ourselves? I&#x27;d like to see how you handle user-visible concerns such as accessibility.
评论 #26094092 未加载
cubanoover 4 years ago
Great job guys and love hearing stories about brothers working together.<p>So like the main problem with this is like the long standing one of time...while I would actually love to work with a better way to build webapps with modern stack elements, no matter what relearning to do everything in Wasp will take at least a month.<p>What if after all the time you discover an issue with the framework that prevents you from being able to complete your project?<p>Is it possible to extend the included base libs and work natively if need be?<p>I guess as long as devs have the ability to push Wasp aside and work directly with the libs, there is nothing that you could not eventually do.<p>Just some quick thoughts but Im gonna give this a whirl this week.
评论 #26093000 未加载
nicoburnsover 4 years ago
What&#x27;s your story on extensibility? My experience with such tools if that they&#x27;re great while you stay within the bounds of what they support, and quickly become a nightmare when you (usually quite quickly) hit into their limitations.<p>As a junior dev I&#x27;d have loved this. Now, every instinct is telling me stay away.
评论 #26092821 未加载
fnyover 4 years ago
Why did you decide to create a bespoke language rather that create a DSL that&#x27;s still JavaScript?
评论 #26093639 未加载
akshaybhalotiaover 4 years ago
Totally unrelated to the post but chaotic-neutral question: are you folks similar looking twins? If yes, have you ever done this or thought about going to work in place of the person and see how long you could get through the day? Would love to hear anecdotes if any!
评论 #26102408 未加载
jonstaabover 4 years ago
Very cool project! I love stuff like this. I actually started a very similar fun project last week[0]. It&#x27;s very much just a thought experiment, but the most interesting thing about it (I think) is the use of dynamic rather than lexical scope to control state. It&#x27;s also designed to be extensible using python, js, and html.<p>I did take a quick look at the Wasp real-world app and was sort of disappointed. It seemed like a single file with lots of weird syntax that pulls in a regular old React app. Is there something I&#x27;m missing?<p>[0] <a href="https:&#x2F;&#x2F;github.com&#x2F;staab&#x2F;quack" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;staab&#x2F;quack</a>
评论 #26093111 未加载
0xferruccioover 4 years ago
I’ve tried to find something like this for a long time! You’re bringing the ease of deploying and building a web app with Rails + Heroku to the JS ecosystem
评论 #26094330 未加载
nwsmover 4 years ago
Looks interesting! Is there no live hosted example site built with Wasp? I didn&#x27;t see links for deployed versions of the realworld or TodoApp examples which would be nice.<p>(edit: I found a Medium clone linked on their homepage: <a href="https:&#x2F;&#x2F;wasp-rwa.netlify.app&#x2F;" rel="nofollow">https:&#x2F;&#x2F;wasp-rwa.netlify.app&#x2F;</a>)<p>Is there any distinction in the language for client- vs server-side routing?
评论 #26102220 未加载
sanmakover 4 years ago
To author, the app looks like an efficient way to build an app but would be better if you can add some more examples to showcase wasp-lang actual power. Examples with basic workflow will suffice.<p>For someone who want to build something fast and prevent themselves from repetitive tasks, they need to be very sure before jumping into a new wasp-lang codebase.
评论 #26092916 未加载
zibbity-rwover 4 years ago
This is brilliant! Do you have any resources or thoughts to share on designing DSLs? Mad respect for people doing this.
评论 #26092421 未加载
herunanover 4 years ago
Looks really great! Will give it a try. You already have a stamp of approval from a Rails dev.
评论 #26100262 未加载
alex-wallishover 4 years ago
Very cool project. How do you plan to monetize it? I don&#x27;t see mention on the site
评论 #26093108 未加载
cpursleyover 4 years ago
Would be great to see this paired up with Hasura as the backend (also written is Haskell). I&#x27;m using Hasura with React Admin (configuration based admin framework) and it&#x27;s a huge time saver.
评论 #26095703 未加载
评论 #26094888 未加载
pellaover 4 years ago
Question:<p>Mobile App (iOS&#x2F;Android) - generation is on the roadmap?<p>( using same metadata(DSL) )
评论 #26092137 未加载
insomniacityover 4 years ago
Every other tool in this space is in NPM - why do I have to trust your install script?
评论 #26107891 未加载
borellviover 4 years ago
Congratulations for the launch! How are you finding Haskell? Why did you pick it?
评论 #26093764 未加载
sharemywinover 4 years ago
What is the benefit of a DSL versus a configuration file?
评论 #26092492 未加载
pellaover 4 years ago
Please add an extra AI layer generating WASP DSL !<p>GPT-3 -&gt; WASP -&gt; Web APP
评论 #26092723 未加载
bnrover 4 years ago
That link does not work, Page not found: <a href="https:&#x2F;&#x2F;wasp-lang.dev&#x2F;docs&#x2F;tutorials&#x2F;getting-started" rel="nofollow">https:&#x2F;&#x2F;wasp-lang.dev&#x2F;docs&#x2F;tutorials&#x2F;getting-started</a>
评论 #26092143 未加载
评论 #26092117 未加载