c41f065ef4
* Support typing backend queries * Implement types for actions and extract entities * Add Prisma entities to the frontend * Add frontend types to internal todoApp * Undo moving for easier review * Revert back to generating a query.js file * Rename buildEntityData * Remove solved todo in schema template * Fix docs in method * Adding uninstall command (#953) * Adding uninstall command * Updates docs and changelog related to the uninstall command * Use StrongPath instead of FilePath * Fix review feedback * Move prisma client generation messages * Generalize FileDraft functions * Generate prisma clients using ENV * Fix schema checksum check * Small refactor in db generator * Run prisma generate from server root dir * Fix types for useAction * Fix type error for useAction * Fix schema generation in Dockerfile * Refactor passing env vars to prisma schema * Fix useAction types * Replace Prelude readFile with SP readFile * Add comment for prisma/client in web app * Replace Prelude writeFile with SP writeFile * Replace do and if with ifM * Rename readProjectTelemetryFile * Refactor readOrCreateUserSignatureFile * Remove redundant comment * Fix typo in variable name * Simulate unions with a type class * Further improve strongpath types * Generate prisma clients after migration * Change ModuleRootDir to ComponentRootDir * Remove solved todo * Improve naming * Remove redundant env variable * Improve formatting * Fix errors after merging * Change local function name Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Rename local function again * Update changelog * Fix error type in useQuery * Rename Component to AppComponent * Refactor DbGenerator * Explain Abs paths in SP helpers * Update e2e tests * Fix formatting * Change signature for doesFileExist * Change signature for SP functions * Remove redundant do block * Fix formatting * Reorder functions * Rename module to appComponent in functions * Rename module to component in functions * Rename telemetry cache function * Fix formatting --------- Co-authored-by: Mihovil Ilakovac <mihovil@ilakovac.com> Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> |
||
---|---|---|
.github | ||
examples | ||
project-page | ||
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).
// file: main.wasp
app TodoApp {
title: "Todo App",
wasp: { version: "^0.7.0" }
}
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 beta, with most features flushed out and working well. However, there is still a lot of improvements and additions that we have in mind for the future, and we are working on them constantly, so you can expect a lot of changes and improvements in the future. As Wasp grows further, it should allow the development of web apps of increasing complexity!
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.
- 💬 Join the discussion at https://github.com/wasp-lang/wasp/discussions .
Careers
Check our careers page for a list of currently opened positions!