__ __ ___
/ //_/_ ___________ _____ ____/ (_)___ _
/ ,< / / / / ___/ __ `/ __ \/ __ / / __ `/
/ /| / /_/ / / / /_/ / / / / /_/ / / /_/ /
/_/ |_\__, /_/ \__,_/_/ /_/\__,_/_/\__,_/
/____/
Kyrandia began as a MajorBBS/Worldgroup text adventure where apprentices chased the title of "Arch-Mage of Legends." This repository now houses the effort to bring that world to a modern stack: a JavaScript front-end paired with a FastAPI- and SQLAlchemy-powered Python back-end. Our goal is to preserve the cooperative, spell-driven gameplay while delivering a maintainable, testable web experience.
- Keep gameplay behaviors faithful to the original C sources while exposing them through modern transports (HTTP + WebSockets).
- Treat the legacy data structures as canonical schemas for new models, validation rules, and content serialization.
- Provide a smooth developer workflow with pytest-driven testing, fixture packaging, and Docker/WSL2-friendly tooling.
- Preserve the historical assets by keeping the full Borland/Visual Studio project in
legacy/for reference and for anyone who still wants to build the classic module.
backend/— FastAPI services, SQLAlchemy models, fixtures, and scripts for packaging offline content.frontend/— Vite + React + TypeScript application providing a view-only navigator UI for exploring game fixtures.docs/— Porting plan, architecture notes, and code maps that tie legacy concepts to the new stack.legacy/— The original MajorBBS/Worldgroup sources, assets, and build files (ELWKYR.MAK,elwkyr.vcxproj, message catalogs, and packagedDist/).LICENSE.txt,CONTRIBUTING.txt,AGENTS.md— Policies and contributor guidance that apply across the project.
- Install backend dependencies
- Follow
backend/DEVELOPMENT.mdto create a virtual environment and install requirements.
- Follow
- Install frontend dependencies
- Navigate to
frontend/and runnpm installto install the Node.js dependencies. - Copy
frontend/.env.exampletofrontend/.env.localand configure your backend endpoints.
- Navigate to
- Run the development server
- Start the backend API server following instructions in
backend/DEVELOPMENT.md. - In a separate terminal, run
cd frontend && npm run devto start the frontend development server.
- Start the backend API server following instructions in
- Run tests
- Backend: Execute
pytest backend/teststo validate fixtures, models, and helper utilities. - Frontend: Execute
cd frontend && npm testto run the frontend test suite.
- Backend: Execute
- Package offline content
- Generate a bundle suitable for disconnected clients with
cd backend && python -m kyrgame.scripts.package_content --output ../legacy/Dist/offline-content.json.
- Generate a bundle suitable for disconnected clients with
- Consult or build the legacy module
- The C sources live in
legacy/. To build the Borland target, runcd legacy && make -f ELWKYR. Visual Studio users can openlegacy/elwkyr.vcxproj.
- The C sources live in
- Use
docs/DEV_HOSTING.mdfor local development, Docker Desktop testing, hot reload, local admin allowlists, and optional temporary tunnel checks. - Use
docs/SELF_HOSTING.mdto run an independent public server with a same-origin domain, private Postgres, backups, restore steps, reverse-proxy requirements, and admin bootstrap guidance.
The root compose.yaml remains the development stack. Public operators should
treat the self-hosting guide as the hosting contract and adapt it to their own
Compose, reverse-proxy, or platform deployment.
The adventure is set in the enchanted realm of Kyrandia under the eye of Tashanna, the "Lady of Legends." Players begin as young apprentices who explore, trade, duel, and solve puzzles to advance through spellcasting ranks. That spirit of cooperative multiplayer magic continues to guide the modernized experience even as we reimplement the systems behind it.
This project is licensed under the AGPL v3. Additional terms apply to contributions and derivative projects. Please see the LICENSE file for more details.
We welcome contributions from the community. By contributing, you agree to the terms outlined in the CONTRIBUTING file.
If you create an entirely new project based on this work, it must be licensed under the AGPL v3, assign all right, title, and interest, including all copyrights, in and to your fork to Rick Hadsall and Elwynor Technologies, and you must include the additional terms from the LICENSE file in your project's LICENSE file.