A personal dashboard for cross-world market board arbitrage in Final Fantasy XIV. It scans all worlds in the 陸行鳥 Data Center, finds items cheaper elsewhere than on 利維坦 (home world), and ranks them by expected daily profit.
Data is sourced from the Universalis API and refreshed continuously (each full scan cycle takes ~2.5 minutes).
- Bun runtime
# Install dependencies
bun install
# Build the app
bun run build
# Start the server
bun startThen open http://localhost:3000 in your browser. The first scan takes about 1.5 minutes before results appear (the per-world strategy scans all 8 worlds sequentially — see ADR-005). A progress bar shows the current phase and completion percentage during the initial scan.
# Start the dev server
bun run dev
# Start with pre-seeded cache data (skips Universalis scanner)
FIXTURE_DATA=true bun run devbun run test # unit tests (vitest)
bun run test:e2e # E2E tests (Playwright, requires Chromium)The app is containerized via Docker. See the Dockerfile and .github/workflows/ for details.
Branching model, feature-shipping recipe, and useful git commands are in docs/git-workflow.md. The short version:
- Feature work happens on
feat/<ticket>-<slug>branches offmain. - Merge to
mainwith--no-ffand a handcrafted merge commit subject describing the feature. - Release to prod with
./scripts/release.sh [-M | -m | -p | X.Y.Z]— bumps the version, tags, pushes. - Use
git log main --first-parentto read the release log.