Prediction Stack docs
v1.0.0
Live app Get help
● Ship · Any static host

Deployment
a folder of static files.

Deploy the repository root to any static host. Never deploy admin/. You run your own deployment; MIKODES operates no instance for you.

01What gets deployed

DeployDo not deploy
  • index.html, icons, brand/
  • config/public.json
  • scanner/public/ (with board.json, crossvenue-diag.json)
  • terminal/public/ (with data/tape.json)
  • bot/public/
  • design-system/ (harmless)
  • admin/ (the admin, its database and .env)
  • scanner/data/, scanner/src/, scanner/test/, terminal/src/
  • .github/, every *.md file
  • node_modules/

.vercelignore already excludes the right-hand column. Use the same list on any other host.

02Vercel

vercel.json in the repository root configures:

  • Old folder paths (permanent redirects): links to the folder names used before 1.0.0 are sent to /scanner/…, /terminal/… and /bot/….
  • Short paths (temporary redirects): /scanner, /terminal, /bot, plus /scanner/admin and /terminal/admin, which explain that the admin runs on your own machine.
  • No caching of JSON: Cache-Control: no-store, max-age=0 on every .json.
  • Headers: X-Content-Type-Options: nosniff, Referrer-Policy: no-referrer and X-Robots-Tag: noindex, nofollow.
Search engines

The X-Robots-Tag header tells search engines not to index the site. Remove it from vercel.json when you want your site in search results.

  1. ImportIn Vercel, import your GitHub repository.
  2. SettingsFramework preset: Other. No build command. Output directory: the repository root.
  3. DeployVercel builds each push to the production branch, including your own config/public.json commits. Refresh-job commits: see the note below.
  4. DomainPoint your DNS at Vercel as Vercel documents.
Refresh-job commits on Vercel's Hobby plan

The refresh job commits as mikodes-bot. On 2026-09-25 Vercel's Hobby plan refused to deploy such a commit (status BLOCKED, TEAM_ACCESS_REQUIRED): Hobby deploys only commits whose author is the account owner. The fresh data is then in git but not on the site until a commit authored by you is deployed on top of it (any push of yours, or Redeploy of a later commit of yours). A paid Vercel team, or a static host that deploys every commit, does not have this limit. The pages always show how old their data is, so a site that was not redeployed is stale, never wrong.

Not tested here No deployment was made while writing these docs.

03Any other static host

  • Upload the repository root minus the "do not deploy" list.
  • config/public.json must be reachable at /config/public.json; serving the repository layout unchanged is enough.
  • Set Cache-Control: no-store for *.json if your host allows it.
  • Without the short paths, link to the full paths (/scanner/public/index.html and so on).
  • If the host does not build from git, redeploy after each refresh, or the site keeps showing the last uploaded data (the pages show how old it is).

04Pre-launch checklist

  • The refresh job has run on your repository and the pages show today's data.
  • Brand, legal links and disclaimer are set, and config/public.json is committed.
  • Admin → Status shows no failing blocker.
  • git ls-files admin lists neither .env nor data/.
  • You have decided, with legal advice, where you offer the site and each venue.