aex/README.md

75 lines
2.3 KiB
Markdown
Raw Normal View History

# aex
2025-09-11 05:43:59 +00:00
A D&D 5e character sheet and campaign dashboard for a text-based play-by-post
game. The UI is in Russian.
2025-09-11 05:43:59 +00:00
## What works today
2025-09-11 05:43:59 +00:00
- 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
- 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)
2025-09-11 05:43:59 +00:00
State autosaves to localStorage (debounced) and survives reloads; export/
import round-trips through a JSON file. The phased plan is in
[ROADMAP.md](./ROADMAP.md).
2025-09-11 05:43:59 +00:00
## Tech stack
2025-09-11 05:43:59 +00:00
- Rust, edition 2024, nightly toolchain (pinned in `rust-toolchain.toml`)
- Leptos 0.8 SSR (actix-web) + client-side hydration
- `reactive_stores` for the reactive state model
- SCSS (`style/main.scss`), compiled by dart-sass
- Playwright for end-to-end tests
2025-09-11 05:43:59 +00:00
## Development
2025-09-11 05:43:59 +00:00
Prerequisites: `cargo-leptos`, dart-sass, and the `wasm32-unknown-unknown`
target. The nightly toolchain installs itself via `rust-toolchain.toml`.
2025-09-11 05:43:59 +00:00
```sh
cargo install cargo-leptos
cargo leptos watch # dev server with hot reload
# open http://127.0.0.1:3000
```
2025-09-11 05:43:59 +00:00
Other commands:
2025-09-11 05:43:59 +00:00
```sh
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
```
2025-09-11 05:43:59 +00:00
## Tests
2025-09-11 05:43:59 +00:00
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:
2025-09-11 05:43:59 +00:00
```sh
cd end2end
npm install
npx playwright test --project=chromium
2025-09-11 05:43:59 +00:00
```
or let cargo-leptos manage the server: `cargo leptos end2end`.
2025-09-11 05:43:59 +00:00
## Project docs
2025-09-11 05:43:59 +00:00
- [ARCHITECTURE.md](./ARCHITECTURE.md) — how the code is organized
- [ROADMAP.md](./ROADMAP.md) — the phased plan to MVP
- [MODERNIZE.md](./MODERNIZE.md) — dependency and idiom cleanup list
2025-09-11 05:43:59 +00:00
## License
2025-09-11 05:43:59 +00:00
Public domain (Unlicense), see [LICENSE](./LICENSE).