- drop the player-card test (components removed) - new: '+ слот' grows attunements to 4+ and a new slot binds an item - new: armor class starts at 16 (mock) and persists through a reload |
||
|---|---|---|
| assets | ||
| data | ||
| end2end | ||
| src | ||
| style | ||
| .gitignore | ||
| ARCHITECTURE.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| MODERNIZE.md | ||
| README.md | ||
| ROADMAP.md | ||
| rust-toolchain.toml | ||
aex
A D&D 5e character sheet and campaign dashboard for a text-based play-by-post game. The UI is in Russian.
What works today
- Campaign header: name, in-game date steppers, session counter, and
Save / Load / Clear: download
dashboard.json, import a file back, wipe to a blank campaign - Undo/redo: header buttons and Ctrl+Z / Ctrl+Shift+Z / Ctrl+Y over edit bursts; Clear and import are undoable too
- Character page: player card, prepared spells (free-text slots with level/description) and attunements (3 slots, clearable)
- Character sidebar: portrait, names, class, level, XP, hit points with temp HP bar, hit dice, death saves, spell slots
- Inventories page (
/inv): personal and party-common inventories, currency per denomination, item rows with quantity and weight steppers, move between inventories, remove - Bundled 5e.tools item data (~5k items) with fuzzy search components (search is not mounted on a page yet)
State autosaves to localStorage (debounced) and survives reloads; export/ import round-trips through a JSON file. The phased plan is in ROADMAP.md.
Tech stack
- Rust, edition 2024, nightly toolchain (pinned in
rust-toolchain.toml) - Leptos 0.8 SSR (actix-web) + client-side hydration
reactive_storesfor the reactive state model- SCSS (
style/main.scss), compiled by dart-sass - Playwright for end-to-end tests
Development
Prerequisites: cargo-leptos, dart-sass, and the wasm32-unknown-unknown
target. The nightly toolchain installs itself via rust-toolchain.toml.
cargo install cargo-leptos
cargo leptos watch # dev server with hot reload
# open http://127.0.0.1:3000
Other commands:
cargo leptos build --release # production build
cargo leptos serve # dev server without the watcher
cargo check --no-default-features --features ssr --bin aex
cargo check --no-default-features --features hydrate --lib
cargo check --target wasm32-unknown-unknown --no-default-features --features hydrate --lib
Tests
End-to-end tests live in end2end/ (Playwright): a smoke spec and a
persistence spec (reload keeps state; export/import round trip). With the
dev server running:
cd end2end
npm install
npx playwright test --project=chromium
or let cargo-leptos manage the server: cargo leptos end2end.
Project docs
- ARCHITECTURE.md — how the code is organized
- ROADMAP.md — the phased plan to MVP
- MODERNIZE.md — dependency and idiom cleanup list
License
Public domain (Unlicense), see LICENSE.