Two applications in one repository:
- The tracker — a mobile-first progressive web app for tracking game state in tabletop games, supporting Star Wars: Unlimited and Star Wars X-Wing. Live: https://dmgctrl.app
- Sealed (
sealed/) — a playable digital Star Wars: Unlimited sealed-deck game: a full rules engine, card abilities, and a searching AI opponent with its own benchmark harness. Desktop browser only. Live: https://dmgctrl.app/sealed
They are separate npm projects with separate dependencies, build steps and docs. Most changes touch one or the other, not both.
- Open the link above in Safari (must be Safari, not Chrome or any other browser)
- Tap the Share button — the box with an arrow pointing upward at the bottom of the screen
- Scroll down and tap Add to Home Screen
- Confirm the name and tap Add
The app will appear on your home screen and open full screen without any browser chrome.
- Open the link above in Chrome
- Tap the three-dot menu in the top right
- Tap Add to Home Screen
- Confirm and tap Add
- Node.js (LTS) — nodejs.org
- Git — git-scm.com
- GitHub CLI — cli.github.com
There are no npm workspaces, so each project installs its own dependencies. All three are needed before npm test will run, because it shells into proxy and sealed.
gh repo clone yetanotheridentifier/dmgCtrl
cd dmgCtrl
npm install --legacy-peer-deps
npm install --prefix proxy
npm install --prefix sealedThe tracker:
npm run dev # http://localhost:5173/Sealed, or both at once:
npm run dev:sealed # sealed only, http://localhost:5174/
npm run dev:all # both: sealed on 5174, tracker on 5173 over https, proxying /sealeddev:all is the one to use when working on Sealed as it is actually served, at https://localhost:5173/sealed/. Ctrl+C stops both.
npm test # all three suites: tracker, proxy, sealed
npm run check --prefix sealed # sealed's own gate: tests, tsc -b and eslint in sequencenpm run check is what to run before handing over a sealed change. It regenerates the build identity first, then stops at the first failure.
All changes pushed to main are automatically built and deployed via GitHub Actions. Deployment takes approximately one minute — progress is visible in the Actions tab of the repository.
git pushEach application has its own docs, and they do not overlap: docs/ is the tracker's, sealed/docs/ is Sealed's.
Start at sealed/docs/README.md, which maps one file per concern.
| Document | Description |
|---|---|
| sealed/docs/architecture.md | System shape, rules engine, data model, runtime flow, storage, network |
| sealed/docs/abilities.md | How a card's behaviour is declared, registered and dispatched |
| sealed/docs/choices.md | Pending choices: raising, answering, prompts, the guarantees |
| sealed/docs/keywords-effects.md | Stats pipeline, auras, lasting effects, token defeats, targeting |
| sealed/docs/ai-model.md | What the opponent AI thinks: terms, weights, invariants |
| sealed/docs/ai-benchmark.md | The benchmark harness and its modes |
| sealed/docs/operations.md | Local dev, build, deploy, support playbook, diagnostics |
| sealed/docs/planned-work.md | What is next, what is deferred, what was tried and rejected |
| sealed/docs/userGuide.md | How the game plays, and the in-app Help page at build time |
| Document | Description |
|---|---|
| docs/architecture-overview.md | System overview, goals, tech stack, component tree, glossary |
| docs/architecture-implementation.md | Folder structure, state management, data layer, UI system, feature details, performance |
| docs/architecture-process.md | Workflow, CI/CD, analytics, testing strategy, future improvements |
| docs/project-overview.md | Product vision, planned features, known issues, notes for AI assistants |
| docs/swuHelp.md | SWU help page: Setup, Game, Tournament, Rules (Help in the More menu on the SWU screens) |
| docs/xwingHelp.md | X-Wing help page: Setup, Squad lists, Game, Tournament, Rules (Help on the X-Wing screens) |
| docs/appHelp.md | App help page: starting the app, install, About (Help on game select) |
Pull requests aren't being accepted yet. See CONTRIBUTING.md for how to help today.
MIT