arkham.build is a web-based deckbuilder for Arkham Horror: The Card Game™.
🗺️ Roadmap
arkham.build extends the arkhamdb deck schema with a few fields for additional functionality.
meta.extra_deck
: Parallel Jim's spirit deck. Format: comma-separated list of ids"id1,id2,id3"
.meta.attachments_{code}
: cards that are attached to a specific setup deck, for example Joe Diamond or Stick to the Plan. Format: comma-separated list of ids"id1,id2,id2,id3"
.meta.card_pool
: packs that can be used for this deck. Used for limited pool deckbuilding such as #campaign-playalong. Format:"<pack_code>,<pack_code>"
. For arkham.build, new format pack codes take precedence over old format.meta.sealed_deck
: card ids that are pickable for this deck. Used for sealed deckbuilding. Format: comma-separated list of ids"id1,id2,id2,id3"
.meta.sealed_deck_name
: name of the sealed deck definition used. format: string.
The sealed deck feature expects a csv file in the format:
code
1
2
3
4
- Create an
.env
file from.env.example
. npm install
npm run dev
The API is a separate, private git project hosted as a Cloudflare worker.
Arkham-related SVG icons are sourced from ArkhamCards's icomoon project and loaded as webfonts. Additional icons are bundled as SVG via vite-plugin-svgr
or imported from lucide-react
.
extended version of vite's official
react-ts
template.
additional features:
- biome for linting and code formatting.
- lefthook for pre-commit checks.
- vitest for unit testing.
- playwright for end-to-end testing.
- github actions for continuous integration.
- browserslist + autoprefixer.
# install dependencies.
npm i
npm run dev
npm run build
npm test
# run vitest in watch mode.
npm run test:watch
# collect coverage.
npm run test:coverage
npm run lint
npm run fmt
Prettier will be run automatically on commit via lint-staged.
Serves the content of ./dist
over a local http server.
npm run preview