Home
Softono

Webapp.rs

Open source Apache-2.0 Rust
2.2K
Stars
221
Forks
0
Issues
40
Watchers
3 months
Last Commit

 About Webapp.rs

A web application completely written in Rust. 🌍

Platforms

Web Self-hosted

Languages

Rust

Links

Need Help Installing Webapp.rs?

We provide expert installation service for this software. Our team will install, configure, and secure Webapp.rs on your server. plans start at just $30.

webapp.rs

CI Docs Coverage Docs Crates.io License Apache 2.0

A web application completely written in Rust

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

graph LR
    A[Leptos / WASM<br>in browser] -->|SSR / RPC| B[Axum<br>HTTP Server]
    B --> C[SQLx]
    C --> D[(PostgreSQL)]

Blog Posts

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

Architecture

Component Technology
Frontend Leptos (WebAssembly with SSR + hydration)
Backend Axum (via leptos_axum)
Database PostgreSQL (via SQLx)
Auth JWT tokens (jsonwebtoken) + Argon2 password hashing

The application uses Leptos server functions to communicate between frontend and backend, eliminating the need for a separate REST API layer. Both server and client are compiled from a single Rust crate.

Features

  • User registration with Argon2 password hashing
  • Login with username and password
  • JWT-based session management with automatic renewal
  • PostgreSQL session and user storage
  • CSRF protection via origin validation
  • Health check endpoint (/healthz) for container orchestration
  • Server-side rendering with client-side hydration
  • Single binary deployment

Prerequisites

Getting Started

Start a PostgreSQL instance:

docker run -d --name postgres \
    -e POSTGRES_USER=webapp \
    -e POSTGRES_PASSWORD=webapp \
    -e POSTGRES_DB=webapp \
    -p 5432:5432 \
    postgres:17

Run the application:

export DATABASE_URL=postgres://webapp:webapp@localhost/webapp
cargo leptos watch

The application will be available at http://127.0.0.1:3000.

Register a new account using the "Register" link on the login page, then log in with your credentials.

Configuration

Environment Variable Description Default
DATABASE_URL PostgreSQL connection string postgres://localhost/webapp
JWT_SECRET Secret key for JWT token signing change-me-in-production
LEPTOS_SITE_ADDR Server listen address 127.0.0.1:3000

Container

Build and run as a container:

docker build -t webapp .
docker run -p 3000:3000 \
    -e DATABASE_URL=postgres://webapp:[email protected]/webapp \
    webapp

Development

cargo fmt --check                              # Check formatting
cargo clippy --features ssr -- -D warnings     # Lint server code
cargo test --features ssr                      # Run tests
cargo leptos build                             # Build for development
cargo leptos build --release                   # Build for production

Contributing

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

License

Apache 2.0