No description
  • Rust 82.7%
  • Nix 14%
  • CSS 3.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-02 20:28:33 -06:00
src initial start, can log in 2026-10-02 20:28:33 -06:00
.editorconfig initial start, can log in 2026-10-02 20:28:33 -06:00
.env.example initial start, can log in 2026-10-02 20:28:33 -06:00
.gitignore initial start, can log in 2026-10-02 20:28:33 -06:00
Cargo.lock initial start, can log in 2026-10-02 20:28:33 -06:00
Cargo.toml initial start, can log in 2026-10-02 20:28:33 -06:00
Dioxus.toml initial start, can log in 2026-10-02 20:28:33 -06:00
flake.lock initial start, can log in 2026-10-02 20:28:33 -06:00
flake.nix initial start, can log in 2026-10-02 20:28:33 -06:00
package-lock.json initial start, can log in 2026-10-02 20:28:33 -06:00
package.json initial start, can log in 2026-10-02 20:28:33 -06:00
README.md initial start, can log in 2026-10-02 20:28:33 -06:00
rustfmt.toml initial start, can log in 2026-10-02 20:28:33 -06:00
tailwind.css initial start, can log in 2026-10-02 20:28:33 -06:00

meiSSH web

The first web slice for meiSSH: a Dioxus 0.7 full-stack app with Tailwind CSS, OIDC Authorization Code login, and an authenticated welcome page.

Run locally

Nix

cp .env.example .env
# Configure the OIDC values in .env, then:
nix run .#dev

The flake provides Rust with the WASM target, Dioxus CLI, Node.js, and Tailwind. Use nix develop if you want an interactive shell with the same tools.

Format the source with two-space indentation, then run the formatting checks:

cargo fmt
nix fmt
nix run .#lint

Tailwind class lists that would make a class: attribute exceed 100 columns are written as multiline strings. The lint command rejects any class-string line that exceeds the limit.

Without Nix

Prerequisites: Rust, the wasm32-unknown-unknown Rust target, Node.js, and the Dioxus CLI.

rustup target add wasm32-unknown-unknown
cargo install dioxus-cli
npm install
cp .env.example .env

Register http://localhost:8080/auth/callback as an allowed callback with the OIDC provider, fill in .env, export those variables, and run:

set -a
. ./.env
set +a
dx serve

Dioxus detects tailwind.css and builds assets/tailwind.css automatically. The npm scripts are available for building or watching CSS separately.

OIDC behavior

  • Authorization Code flow with PKCE, CSRF state, and nonce validation
  • Provider discovery and full ID-token validation through openidconnect
  • HttpOnly, SameSite=Lax session cookie
  • Secure cookies by default; set SESSION_COOKIE_SECURE=false only on local HTTP
  • Eight-hour inactivity expiry

The initial session store is intentionally in memory. It is suitable for local development and one server process; a shared store is required before running multiple CA/web instances.