- Rust 82.7%
- Nix 14%
- CSS 3.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| src | ||
| .editorconfig | ||
| .env.example | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Dioxus.toml | ||
| flake.lock | ||
| flake.nix | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| rustfmt.toml | ||
| tailwind.css | ||
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=falseonly 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.