2fe7398462
* Separate ext code to client and server * Use skeleton in createNewProject and refactor * Refactor Lib.hs to use ExceptT * Fix formatting * Pop up returns * Extract liftIO and add a do block Co-authored-by: Shayne Czyzewski <523636+shayneczyzewski@users.noreply.github.com> * Address some review comments * Add skeleton comment * Extract common CommandError message * Separate skeleton comment into two rows * Move server and client dirs into src * Simplify maybeToEither * Further refactor Lib.hs * Further simplify skeleton comment * Add shared code directory to project structure * Update e2e test inputs * Update e2e test outputs * Fix formatting * Fix bug in compile function Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Change map to fmap in compile function * Fix formatting * Force git to include empty directories * Remove extra empty line from .gitkeep files * Add .jsconfig to enable go-to-definition * Watch shared directory for changes * Add final newline to jsconfigs * Fix regular and e2e tests * Update e2e tests * Fix cli template packaging and update todoApp * Add a shared function demo to todoApp * Update waspc and e2e tests * Fix compiler warnings and rename function * Rename mkError to mkParserError * Remove redundant empty line * Fix test warnings * Fix formatting * Update waspc.cabal with jsconfigs * Minimize jsconfig.json files * Add jsconfigs to waspc todoApp * Update e2e tests * Update e2e tests * Update docs for new project structure * Update todoApp example to new structure * Update ItWaspsOnMyMachine * Update thoughts * Update Waspello to new structure * Update Waspleau to new structure * Update Realworld to new structure, fix warnings * Fix directory tree watching on wasp start * Implement review feedback * Fix typo in docs Co-authored-by: Shayne Czyzewski <523636+shayneczyzewski@users.noreply.github.com> * Fix typo in docs Co-authored-by: Shayne Czyzewski <523636+shayneczyzewski@users.noreply.github.com> * Fix another typo in docs Co-authored-by: Shayne Czyzewski <523636+shayneczyzewski@users.noreply.github.com> * Add src prefix to file path in docs Co-authored-by: Shayne Czyzewski <523636+shayneczyzewski@users.noreply.github.com> * Remove env server file * Apply suggestions from code review Co-authored-by: Shayne Czyzewski <523636+shayneczyzewski@users.noreply.github.com> * Address code review comments * Fix incorrect path in docs * Fix references to ext in docs * Edit changelog and add migration guide * Further update docs to new structure * Update blogs about example apps to new structure * Fix typo in docs Co-authored-by: Shayne Czyzewski <523636+shayneczyzewski@users.noreply.github.com> * Update typo on frontpage Co-authored-by: Shayne Czyzewski <523636+shayneczyzewski@users.noreply.github.com> * Add missing src in docs Co-authored-by: Shayne Czyzewski <523636+shayneczyzewski@users.noreply.github.com> Co-authored-by: Shayne Czyzewski <523636+shayneczyzewski@users.noreply.github.com> Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> |
||
---|---|---|
.github | ||
examples | ||
waspc | ||
web | ||
.gitattributes | ||
.gitignore | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
SECURITY.md |
A programming language that understands what a web app is.
{= We are hiring! =}
Wasp (Web Application Specification Language) is a declarative DSL (domain-specific language) for developing, building and deploying modern full-stack web apps with less code.
Concepts such as app, page, user, login, frontend, production, etc. are baked into the language, bringing a new level of expressiveness and allowing you to get more work done with fewer lines of code.
While describing high-level features with Wasp, you still write the rest of your logic in your favorite technologies (currently React, NodeJS, Prisma).
NOTE: Wasp is in alpha and is therefore likely to change a lot, have bugs and miss important features.
// file: main.wasp
app TodoApp {
title: "Todo App"
}
route RootRoute { path: "/", to: MainPage }
page MainPage {
component: import Main from "@ext/pages/Main.js" // Importing React component.
}
query getTasks {
fn: import { getTasks } from "@ext/queries.js", // Importing NodeJS code.
entities: [Task]
}
entity Task {=psl
id Int @id @default(autoincrement())
description String
isDone Boolean @default(false)
psl=}
Source files (.wasp
, .js(x)
, .css
, ...) are compiled by waspc
(Wasp compiler) into the web technology stack of your choice (currently React + NodeJS/ExpressJS + Prisma).
▶️ Check out TodoApp example for the complete code example. ◀️
Why is Wasp awesome:
- Quick start: Due to its expressiveness, you can create and deploy a production-ready web app from scratch with very few lines of concise, consistent, declarative code.
- Flexible: When you need more control than Wasp offers, you can write code in existing technologies such as js/html/css/... and combine it with Wasp code!
- No lock-in: If Wasp becomes too limiting for you, simply eject and continue with the generated source code, which is human-readable.
For more information about Wasp, check docs.
Get started
Run
curl -sSL https://get.wasp-lang.dev/installer.sh | sh
to install Wasp on OSX/Linux. From there, just follow the instructions to run your first app in less then a minute!
For more details (including installing on Windows) check out the docs.
This repository
This is the main repo of the Wasp universe, containing core code (mostly waspc
- Wasp compiler) and the supporting materials.
Project status
Currently, Wasp is in alpha and has enough features so that you can develop a basic web app in it! You might find that it misses flexibility in some places or that some bigger features are missing, but the basics are there and we are now adding on top of them. In the case you get stuck, you can take the generated code and continue with it. As Wasp grows further, it should allow the development of web apps of increasing complexity, without the need to eject!
While the idea is to support multiple web tech stacks in the future, right now we are focusing on the specific stack: React + react-query, NodeJS + ExpressJS, Prisma. We might yet change that as time goes, taking trends into account, but for now, this is serving us well for the purpose of developing compiler and language.
Contributing
Any way you want to contribute is a good way :)!
The best place to start is to check out waspc/, where you can find detailed steps for the first time contributors + technical details about the Wasp compiler.
Even if you don't plan to submit any code, just joining the discussion on discord and giving your feedback is already great and helps a lot (motivates us and helps us figure out how to shape Wasp)!
You can also:
- ⭐ Star this repo to show your interest/support.
- 📫 Stay updated by subscribing to our email list.
Careers
Check our careers page for a list of currently opened positions!