2026-08-15 11:57:35 +00:00
|
|
|
# aex
|
2025-09-11 05:43:59 +00:00
|
|
|
|
2026-08-15 11:57:35 +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
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
## What works today
|
2025-09-11 05:43:59 +00:00
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
- Campaign header: name, in-game date steppers, session counter
|
|
|
|
|
- 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
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
State is mock data: nothing is persisted, and several buttons and pages are
|
|
|
|
|
stubs. The phased plan to fix that is in [ROADMAP.md](./ROADMAP.md).
|
2025-09-11 05:43:59 +00:00
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
## Tech stack
|
2025-09-11 05:43:59 +00:00
|
|
|
|
2026-08-15 11:57:35 +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
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
## Development
|
2025-09-11 05:43:59 +00:00
|
|
|
|
2026-08-15 11:57:35 +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
|
|
|
|
2026-08-15 11:57:35 +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
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
Other commands:
|
2025-09-11 05:43:59 +00:00
|
|
|
|
2026-08-15 11:57:35 +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
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
## Tests
|
2025-09-11 05:43:59 +00:00
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
End-to-end smoke tests live in `end2end/` (Playwright). With the dev server
|
|
|
|
|
running on port 3000:
|
2025-09-11 05:43:59 +00:00
|
|
|
|
|
|
|
|
```sh
|
2026-08-15 11:57:35 +00:00
|
|
|
cd end2end
|
|
|
|
|
npm install
|
|
|
|
|
npx playwright test
|
2025-09-11 05:43:59 +00:00
|
|
|
```
|
|
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
or let cargo-leptos manage the server: `cargo leptos end2end`.
|
2025-09-11 05:43:59 +00:00
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
## Project docs
|
2025-09-11 05:43:59 +00:00
|
|
|
|
2026-08-15 11:57:35 +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
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
## License
|
2025-09-11 05:43:59 +00:00
|
|
|
|
2026-08-15 11:57:35 +00:00
|
|
|
Public domain (Unlicense), see [LICENSE](./LICENSE).
|