wasp/README.md

93 lines
4.6 KiB
Markdown
Raw Normal View History

2020-03-23 15:47:08 +03:00
<p align=center>
<img height="80px" src="https://user-images.githubusercontent.com/1536647/77317442-78625700-6d0b-11ea-9822-0fb21e557e87.png"/>
</p>
2020-01-31 17:18:09 +03:00
<p align=center> A programming language that understands what a web app is. </p>
<br>
2020-03-10 15:35:16 +03:00
[![Discord](https://img.shields.io/discord/686873244791210014?label=chat%20on%20discord)](https://discord.gg/rzdnErX)
[![Build Status](https://travis-ci.com/wasp-lang/wasp.svg?branch=master)](https://travis-ci.com/wasp-lang/wasp)
[![Build Status](https://ci.appveyor.com/api/projects/status/github/wasp-lang/wasp?branch=master&svg=true)](https://ci.appveyor.com/project/Martinsos/wasp/branch/master)
2020-01-31 17:18:09 +03:00
2020-09-22 14:52:16 +03:00
- [**Project page**](https://wasp-lang.dev)
- [**Docs**](https://wasp-lang.dev/docs)
2020-03-23 15:47:08 +03:00
<br>
2020-01-31 17:18:09 +03:00
Wasp (**W**eb **A**pplication **Sp**ecification Language) is an extensible [DSL](https://en.wikipedia.org/wiki/Domain-specific_language) (domain-specific language) for building modern web apps with less code.
2020-02-07 19:20:41 +03:00
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.
2020-01-31 17:18:09 +03:00
2020-09-22 14:52:16 +03:00
NOTE: Wasp is still in alpha, meaning it has bugs and many critical featuers are still missing and it is stil changing a lot!
2020-01-31 17:18:09 +03:00
```js
// todoApp.wasp:
app TodoApp {
title: "ToDo app",
favicon: "./todo-logo.png"
}
2020-09-22 14:52:16 +03:00
route "/" -> page Main
page Main {
component: import Main from "@ext/pages/Main"
2020-01-31 17:18:09 +03:00
}
2020-09-22 14:52:16 +03:00
query getTasks {
fn: import { getTasks } from "@ext/queries.js"
2020-01-31 17:18:09 +03:00
}
2020-10-21 17:37:20 +03:00
entity Task {=psl
2020-09-22 14:52:16 +03:00
id Int @id @default(autoincrement())
description String
isDone Boolean @default(false)
psl=}
2020-01-31 17:18:09 +03:00
```
Source files (`.wasp`, `.js(x)`, `.css`, ...) are compiled (transpiled) by `waspc` (Wasp compiler) into the web technology stack of your choice (e.g. React + Redux + ExpressJS + ...).
2020-09-22 15:12:52 +03:00
:arrow_forward: Check out [TodoApp example](waspc/examples/todoApp) for complete code example. :arrow_backward:
2020-01-31 17:18:09 +03:00
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!
2020-09-22 14:52:16 +03:00
- **No lock-in**: If Wasp becomes too limiting for you, simply eject and continue with the generated source code, which is human-readable.
2020-01-31 17:18:09 +03:00
For more information about Wasp, check [**docs**](https://wasp-lang.dev/docs).
2020-01-31 17:18:09 +03:00
2020-02-07 18:27:35 +03:00
# Get started
Check out [the docs](https://wasp-lang.dev/docs/tutorials/getting-started).
2020-01-31 17:18:09 +03:00
# This repository
2020-02-20 16:32:03 +03:00
This is the main repo of the Wasp universe, containing core code (mostly `waspc` - Wasp compiler) and the supporting materials.
2020-01-31 17:18:09 +03:00
# Project status
2020-02-20 16:32:03 +03:00
We are still very early (pre-alpha). Specifically, we are developing `waspc` (Wasp compiler) and also designing language as we go.
2020-01-31 17:18:09 +03:00
2020-09-22 14:52:16 +03:00
Currently, `waspc` is in a state where the main parts are there (code analysis and generation) and we are successfully generating code.
2020-01-31 17:18:09 +03:00
The language itself supports a narrow set of features for now, not enough for serious web app development, but we believe it is a good basis to build upon.
2020-05-07 22:38:54 +03:00
The next step is to expand the language (and compiler) so it can serve the role of a smart code generator - it will still not have enough features to keep you from ejecting for a very long time, but it will be enough to give you a quick start.
2020-01-31 17:18:09 +03:00
Finally, as it grows further, it should allow the development of web apps of increasing complexity without the need to eject!
2020-09-22 14:52:16 +03:00
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.
2020-01-31 17:18:09 +03:00
# Contributing
2020-02-20 16:32:03 +03:00
Any way you want to contribute is a good way :)!
Best place to start is to check out [waspc/](waspc/), where you can find detailed steps for the first time contributors + technical details about the Wasp compiler.
2020-02-20 16:32:03 +03:00
Even if you don't plan to submit any code, just joining discussion on discord [![Discord](https://img.shields.io/discord/686873244791210014?label=chat%20on%20discord)](https://discord.gg/rzdnErX) and giving your feedback is already great and helps a lot (motivates us and helps us figure out how to shape Wasp)!
2020-01-31 17:18:09 +03:00
2020-02-20 16:32:03 +03:00
You can also:
- :star: Star this repo to show your interest/support.
- :mailbox: Stay updated by subscribing to our [email list](https://wasp-lang.dev#signup).
2020-01-31 17:18:09 +03:00
# FAQ
Check out https://wasp-lang.dev/#faq.