- ROADMAP: Phase 2 done-note — player card removed, plain RU headings, growable attunements, manual AC - ARCHITECTURE: character tree line and route contents updated - README: character page and sidebar lines updated (no player card, AC)
79 lines
2.6 KiB
Markdown
79 lines
2.6 KiB
Markdown
# 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: prepared spells (free-text slots with
|
|
level/description) and attunements (growable slots, clearable)
|
|
- Character sidebar: portrait, names, class, level, XP, hit points with
|
|
temp HP bar, manual AC, 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](./ROADMAP.md).
|
|
|
|
## Tech stack
|
|
|
|
- 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
|
|
|
|
## Development
|
|
|
|
Prerequisites: `cargo-leptos`, dart-sass, and the `wasm32-unknown-unknown`
|
|
target. The nightly toolchain installs itself via `rust-toolchain.toml`.
|
|
|
|
```sh
|
|
cargo install cargo-leptos
|
|
cargo leptos watch # dev server with hot reload
|
|
# open http://127.0.0.1:3000
|
|
```
|
|
|
|
Other commands:
|
|
|
|
```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
|
|
```
|
|
|
|
## 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:
|
|
|
|
```sh
|
|
cd end2end
|
|
npm install
|
|
npx playwright test --project=chromium
|
|
```
|
|
|
|
or let cargo-leptos manage the server: `cargo leptos end2end`.
|
|
|
|
## Project docs
|
|
|
|
- [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
|
|
|
|
## License
|
|
|
|
Public domain (Unlicense), see [LICENSE](./LICENSE).
|