All Projects → saschagrunert → Webapp.rs

saschagrunert / Webapp.rs

Licence: mit
A web application completely written in Rust. 🌍

Programming Languages

rust
11053 projects
Makefile
30231 projects
PLpgSQL
1095 projects
HTML
75241 projects
SCSS
7915 projects
Dockerfile
14818 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Webapp.rs

Bug Tracker Pern Ts
Bug Tracking app with project members support. Made with PERN stack + TypeScript.
Stars: ✭ 79 (-95.82%)
Mutual labels:  postgresql, backend, frontend
Udash Core
Scala framework for building beautiful and maintainable web applications.
Stars: ✭ 405 (-78.55%)
Mutual labels:  backend, frontend, webapp
Bank
🏦 Full Stack Web Application similar to financial software that is used in banking institutions | React.js and Node.js
Stars: ✭ 1,158 (-38.67%)
Mutual labels:  postgresql, backend, frontend
Full Stack Fastapi Postgresql
Full stack, modern web application generator. Using FastAPI, PostgreSQL as database, Docker, automatic HTTPS and more.
Stars: ✭ 7,635 (+304.4%)
Mutual labels:  postgresql, backend, frontend
Appy
🚀 A full stack boilerplate web app
Stars: ✭ 225 (-88.08%)
Mutual labels:  backend, frontend, webapp
Company Structure
A company structure with a list of projects and their users
Stars: ✭ 48 (-97.46%)
Mutual labels:  backend, frontend, webapp
Flutterwebsite
The flutter.dev website recreated in Flutter. https://gallery.codelessly.com/flutterwebsites/flutterwebsite
Stars: ✭ 76 (-95.97%)
Mutual labels:  website, webapp
Spring Boot Mongodb Angular Todo App
A Sample App built using Spring Boot, Angular and MongoDB
Stars: ✭ 84 (-95.55%)
Mutual labels:  backend, frontend
Hiring
Create WOW Moments. Create superfans.
Stars: ✭ 85 (-95.5%)
Mutual labels:  backend, frontend
Openseedbox
OpenSeedbox - Open Source Multi-User Bittorrent Web UI
Stars: ✭ 101 (-94.65%)
Mutual labels:  postgresql, frontend
Aceql Http
AceQL HTTP is a framework of REST like http APIs that allow to access to remote SQL databases over http from any device that supports http.
Stars: ✭ 68 (-96.4%)
Mutual labels:  postgresql, http-server
Tinyhttp
🦄 0-legacy, tiny & fast web framework as a replacement of Express
Stars: ✭ 1,259 (-33.32%)
Mutual labels:  backend, http-server
Biliob Frontend
The frontend part of biliob.
Stars: ✭ 108 (-94.28%)
Mutual labels:  frontend, webapp
Uranus
Hierarchical Memo & Task Web-App
Stars: ✭ 71 (-96.24%)
Mutual labels:  postgresql, webapp
Mern Authentication
MERN stack authentication boilerplate: password reset, email verification, server sessions, redux, hooks and docker for dev and prod.
Stars: ✭ 129 (-93.17%)
Mutual labels:  backend, frontend
Mailwatch
MailWatch for MailScanner is a web-based front-end to MailScanner
Stars: ✭ 99 (-94.76%)
Mutual labels:  frontend, webapp
Cms
MaxSite CMS
Stars: ✭ 123 (-93.49%)
Mutual labels:  backend, website
Bulmaswatch
Themes for Bulma
Stars: ✭ 1,525 (-19.23%)
Mutual labels:  frontend, website
Jasypt Spring Boot
Jasypt integration for Spring boot
Stars: ✭ 1,948 (+3.18%)
Mutual labels:  website, webapp
Eshoponcontainersddd
Fork of dotnet-architecture/eShopOnContainers in full DDD/CQRS design using my own patterns
Stars: ✭ 126 (-93.33%)
Mutual labels:  backend, frontend

WebApp.rs

CircleCI Coverage Docs master Docs release Docs release backend Docs release frontend License MIT Crates.io Crates.io Crates.io

A web application completely written in Rust

Target of this project is to write a complete web application including backend and frontend within Rust.

Rust wasm             Rust app
in browser <- REST -> HTTP Server -- actix-web
 |                         |
Yew                   Diesel (ORM) -> PostgreSQL

Blog Posts

  1. A Web Application completely in Rust.
  2. Lessons learned on writing web applications completely in Rust.

Build

The following build dependencies needs to be fulfilled to support the full feature set of this application:

The app consist of a frontend and a backend. For getting started with hacking, the backend can be tested via make run-backend, whereas the frontend can be tested with make run-frontend. You can adapt the application configuration within Config.toml if needed.

This installs build requirements, rust and wasm-pack, on Ubuntu or Debian.

> sudo apt-get update
> sudo apt-get install -y pkg-config libssl-dev npm sudo wget
> wget https://sh.rustup.rs -O rustup-init
> sudo sh rustup-init -y
> sudo cargo install wasm-pack
> sudo npm install -g rollup

This builds the project.

> git clone https://github.com/saschagrunert/webapp.rs.git
> cd webapp.rs
> make all

Run

make deploy uses podman to start a PostgreSQL container and the Rust backend container. If you wish to use docker instead of podman, set CONTAINER_RUNTIME=docker in the top of Makefile. Edit Config.toml if needed to set the backend url and PostgreSQL credentials:

[server]
url = "http://127.0.0.1:30080"
...
[postgres]
host = "127.0.0.1"
username = "username"
password = ""
database = "database"

Ensure the runtime dependencies are installed, and then start the two containers.

> sudo apt install -y postgresql-client
> cargo install diesel_cli --no-default-features --features "postgres"
> sudo make deploy

The application should now be accessible at http://127.0.0.1:30080. During development, you can start the containers separately, using make run-app to start only the rust backend container, and run-postgres to start only the PostgreSQL container.

If both the backend and frontend are running, you can visit the web application at http://127.0.0.1:30080. After the successful loading of the application you should see an authentication screen like this:

authentication screen

The login screen will accept any username and password that are equal, such as me (username) and me (password). There is currently no further user authentication yet, but non matching combination will result in an authentication failure. After the successfully login you should be able to see the content of the application:

content screen

The authentication should persist, it is even better after a manual page reload. Logging out of the application via the logout button should also work as intended.

Control Flow

The complete control flow of the application looks like this:

control screen

Contributing

You want to contribute to this project? Wow, thanks! So please just fork it and send me a pull request.

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].