All Projects â†’ jetli â†’ Rust Yew Realworld Example App

jetli / Rust Yew Realworld Example App

Licence: apache-2.0
Exemplary real world app built with Rust + Yew + WebAssembly

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Rust Yew Realworld Example App

Wasm Worker
Move a WebAssembly module into its own thread
Stars: ✭ 215 (-13.65%)
Mutual labels:  webassembly, wasm
Awesome Wasm Langs
😎 A curated list of languages that compile directly to or have their VMs in WebAssembly
Stars: ✭ 2,966 (+1091.16%)
Mutual labels:  webassembly, wasm
Wasm Examples
WebAssembly Examples
Stars: ✭ 191 (-23.29%)
Mutual labels:  webassembly, wasm
Go Wasm
The in-browser IDE for Go
Stars: ✭ 186 (-25.3%)
Mutual labels:  webassembly, wasm
Vue
The progressive framework for WebAssembly applications.
Stars: ✭ 211 (-15.26%)
Mutual labels:  webassembly, wasm
Wapm Cli
📦 WebAssembly Package Manager (CLI)
Stars: ✭ 236 (-5.22%)
Mutual labels:  webassembly, wasm
Argon2 Browser
Argon2 library compiled for browser runtime
Stars: ✭ 197 (-20.88%)
Mutual labels:  webassembly, wasm
Lam
🚀 a lightweight, universal actor-model vm for writing scalable and reliable applications that run natively and on WebAssembly
Stars: ✭ 176 (-29.32%)
Mutual labels:  webassembly, wasm
Wasm By Example
Wasm By Example is a website with a set of hands-on introduction examples and tutorials for WebAssembly (Wasm)
Stars: ✭ 226 (-9.24%)
Mutual labels:  webassembly, wasm
Artichoke
💎 Artichoke is a Ruby made with Rust
Stars: ✭ 2,557 (+926.91%)
Mutual labels:  webassembly, wasm
Uno.playground
Source code for the Uno Gallery apps and Uno Playground (made in Wasm)
Stars: ✭ 184 (-26.1%)
Mutual labels:  webassembly, wasm
Asm Dom
A minimal WebAssembly virtual DOM to build C++ SPA (Single page applications)
Stars: ✭ 2,604 (+945.78%)
Mutual labels:  webassembly, wasm
Prototype
(deprecated) The journey continues at ASNEXT: https://github.com/AssemblyScript/assemblyscript
Stars: ✭ 2,114 (+749%)
Mutual labels:  webassembly, wasm
Pont
An online board game in Rust and WebAssembly
Stars: ✭ 218 (-12.45%)
Mutual labels:  webassembly, wasm
Raw Wasm
Raw WebAssembly demos
Stars: ✭ 183 (-26.51%)
Mutual labels:  webassembly, wasm
Wasmpatch
🧱Yet Another Patch Module for iOS/macOS via WebAssembly
Stars: ✭ 192 (-22.89%)
Mutual labels:  webassembly, wasm
Webassembly Examples
From Simple To Complex. A complete collection of webassembly examples.
Stars: ✭ 177 (-28.92%)
Mutual labels:  webassembly, wasm
Wag
WebAssembly compiler implemented in Go
Stars: ✭ 177 (-28.92%)
Mutual labels:  webassembly, wasm
Sandspiel
Creative cellular automata browser game
Stars: ✭ 2,476 (+894.38%)
Mutual labels:  webassembly, wasm
Wasmtime Go
Go WebAssembly runtime powered by Wasmtime
Stars: ✭ 239 (-4.02%)
Mutual labels:  webassembly, wasm

RealWorld Example App

Continuous Integration RealWorld Frontend

Rust + Yew + WebAssembly codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld spec and API.

Demo    RealWorld

This codebase was created to demonstrate a fully fledged WebAssembly web application built with Yew including CRUD operations, authentication, routing, pagination, and more.

We've gone to great lengths to adhere to the Yew community styleguides & best practices.

For more information on how to this works with other frontends/backends, head over to the RealWorld repo.

How it looks

You can view a live demo over at Demo

Home(Web) Article(Web)
Home Article
Edit(Desktop) Sign Up(Desktop)
Edit Sign Up

How it works

This is an application written in Rust that utilizes Yew and WebAssembly for developing the frontend web app that powers the RealWorld application.

You can view a full list of crates being used in Cargo.toml, but here are some of the main ones of note:

  • yew - a modern Rust framework for creating multi-threaded frontend apps with WebAssembly.
  • yew-router - a routing library for the Yew framework.
  • lazy_static - a macro for declaring lazily evaluated statics in Rust.
  • parking_lot - provides implementations of Mutex, RwLock, Condvar and Once etc.
  • pulldown-cmark - a pull parser for CommonMark, used to parse Markdown.
  • serde - a generic serialization/deserialization framework.
  • chrono - date and time library for Rust.

Getting started

With Docker

docker-compose up

You can visit http://localhost:8000 in your browser now.

Manually

  • Install Rust

  • Install wasm-pack

    cargo install wasm-pack
    
  • Install node

  • Install npm packages

    npm run install
    
  • Build and develop

    Copy .env.example to .env, and you can change the environment variables if you like.

    cp .env.example .env
    npm start
    

    You can visit http://localhost:8000 in your browser now.

  • Build and release

    npm run build
    

    You should find static files at crates/conduit-wasm/dist folder now, they are hosted in gh-pages branch as a demo.

  • Build and develop for desktop

    If you're planning on targeting Linux you must ensure that Webkit2gtk is already installed and available for discovery via the pkg-config command.

    sudo apt-get update
    sudo apt-get install libwebkit2gtk-4.0-37 libwebkit2gtk-4.0-dev
    
    npm run build:webview
    cargo run -p conduit-webview
    
  • Test

    Install chromedriver, run tests in headless browsers.

    npm test
    

Create Yew App

This project was bootstrapped with Create Yew App, if you want to quickly setup a new Yew web app for your own, you might try Create Yew App, an unofficial tool to set up a modern Yew web app by simply running one command.

npx create-yew-app my-app
cd my-app
npm start

Contributing

Feel free to take a look at the current issues in this repo for anything that currently needs to be worked on.

You are also welcome to open a PR or a new issue if you see something is missing or could be improved upon.

License

Apache License (Version 2.0)

See LICENSE for details

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].