Indirect-command party-management RPG. Long-term target: 2D tactical (Battle Brothers / XCOM-shaped) on Steam.
This repo is a polyglot monorepo:
wayfinders/) — rule engine, character
generation, mission resolution, prose renderers (forthcoming), ML
classifier (forthcoming). Stateless and HTTP-API-driven (FastAPI).client/) — the game itself. Calls the FastAPI
service over HTTP. Steam is the long-term build target.web/) — dev viewers, lesson scaffolding.For project context (stack, ML approach, review expectations), see
CLAUDE.md.
wayfinders/ Python package — game logic, rules, models
wayfinders/api/ FastAPI HTTP boundary (called by the Godot+C# client)
tests/ pytest suite (unit + e2e)
scripts/ Operator scripts (e.g. dump_character.py)
client/ Godot 4.6 .NET client (C#) — see client/README.md
web/ React 19 + TypeScript companion app — see web/README.md
.github/ CI workflows, PR template, CODEOWNERS
Requires Python 3.12 and uv.
git clone https://github.com/didierdbo/wayfinders.git
cd wayfinders
uv sync --all-extras --dev
uv run pre-commit install # one-time; runs ruff/mypy on every commit
uv run pytest -ra # full test suite
Common loops:
uv run ruff check . # lint
uv run ruff format . # format
uv run mypy wayfinders # types
uv run pytest -ra # tests
uv run python scripts/dump_character.py # regenerate web/ fixtures
The game-logic layer exposes a FastAPI HTTP boundary in
wayfinders/api/. The Godot+C# client calls in over HTTP;
the layer stays stateless and language-agnostic.
uv run uvicorn wayfinders.api.app:app --reload # dev server, http://127.0.0.1:8000
Current endpoints:
GET /api/health — liveness/readiness probe.GET /api/units — roster of unit types (matches the C# UnitData record).client/)The Godot 4.6 .NET client lives in client/. Open
client/project.godot in Godot to edit; dotnet build from client/ to
compile from terminal. See client/README.md for setup.
web/)A Vite + React + TypeScript app for inspecting Python-generated game state and
for working through React lessons. See web/README.md and
web/KAI.md. Tested independently with Vitest.
/api/health, /api/units); endpoints expandingSee LICENSE — Apache License, Version 2.0.
C#
64.0%
Python
35.4%
Indirect-command party-management RPG. Long-term target: 2D tactical (Battle Brothers / XCOM-shaped) on Steam.
This repo is a polyglot monorepo:
wayfinders/) — rule engine, character
generation, mission resolution, prose renderers (forthcoming), ML
classifier (forthcoming). Stateless and HTTP-API-driven (FastAPI).client/) — the game itself. Calls the FastAPI
service over HTTP. Steam is the long-term build target.web/) — dev viewers, lesson scaffolding.For project context (stack, ML approach, review expectations), see
CLAUDE.md.
wayfinders/ Python package — game logic, rules, models
wayfinders/api/ FastAPI HTTP boundary (called by the Godot+C# client)
tests/ pytest suite (unit + e2e)
scripts/ Operator scripts (e.g. dump_character.py)
client/ Godot 4.6 .NET client (C#) — see client/README.md
web/ React 19 + TypeScript companion app — see web/README.md
.github/ CI workflows, PR template, CODEOWNERS
Requires Python 3.12 and uv.
git clone https://github.com/didierdbo/wayfinders.git
cd wayfinders
uv sync --all-extras --dev
uv run pre-commit install # one-time; runs ruff/mypy on every commit
uv run pytest -ra # full test suite
Common loops:
uv run ruff check . # lint
uv run ruff format . # format
uv run mypy wayfinders # types
uv run pytest -ra # tests
uv run python scripts/dump_character.py # regenerate web/ fixtures
The game-logic layer exposes a FastAPI HTTP boundary in
wayfinders/api/. The Godot+C# client calls in over HTTP;
the layer stays stateless and language-agnostic.
uv run uvicorn wayfinders.api.app:app --reload # dev server, http://127.0.0.1:8000
Current endpoints:
GET /api/health — liveness/readiness probe.GET /api/units — roster of unit types (matches the C# UnitData record).client/)The Godot 4.6 .NET client lives in client/. Open
client/project.godot in Godot to edit; dotnet build from client/ to
compile from terminal. See client/README.md for setup.
web/)A Vite + React + TypeScript app for inspecting Python-generated game state and
for working through React lessons. See web/README.md and
web/KAI.md. Tested independently with Vitest.
/api/health, /api/units); endpoints expandingSee LICENSE — Apache License, Version 2.0.
C#
64.0%
Python
35.4%