Deployment
The public product is 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.
What gets deployed#
| Deploy | Do not deploy |
|---|---|
index.htmlconfig/public.jsonscanner/public/ (incl. board.json, crossvenue-diag.json)terminal/public/ (incl. data/tape.json)design-system/ (stylesheet sources, harmless)docs/ (these docs)
|
admin/ (the operator console, its database and .env)scanner/data/ (pair database, caches)scanner/src/, scanner/test/, terminal/src/.github/, every *.md filenode_modules/
|
.vercelignore excludes the right-hand column (node_modules/ never reaches git, because .gitignore excludes it). Use the same list on any other host.
Vercel#
vercel.json in the repository root configures:
- Short paths (temporary redirects):
/scannerโ/scanner/public/index.html,/terminalโ/terminal/public/index.html, and/scanner/admin,/terminal/adminโ the pages that explain the admin runs on your own machine. - No caching of JSON:
Cache-Control: no-store, max-age=0on every.json, so a fresh board or a newpublic.jsonshows up as soon as it is deployed. - Headers on everything:
X-Content-Type-Options: nosniff,Referrer-Policy: no-referrerandX-Robots-Tag: noindex, nofollow.
Steps (not run for this guide; no deployment was made):
- In Vercel, import your GitHub repository.
- Framework preset: Other. No build command. Output directory: the repository root.
- Deploy. Vercel builds each push to the production branch, including your own
public.jsoncommits.
A domain is your own business: point your DNS at your host as that host documents.
Any other static host#
- Upload the repository root minus the "do not deploy" list above.
config/public.jsonmust be reachable at/config/public.json. The product pages also try../../config/public.json, so serving the repository layout unchanged is enough.- Set
Cache-Control: no-storefor*.jsonif your host allows it. The pages already fetch withcache: "no-store", but a CDN in front can still serve an old file. - The short paths are optional. Without them, link to the full paths (
/scanner/public/index.htmland so on). - If the host builds from git, the refresh job's commits trigger a redeploy. If it does not, redeploy after each refresh, or the site keeps showing the last uploaded data (the pages show how old it is).
Hosting these docs#
The docs are in docs/ and deploy with the site at /docs/. They are static and also open straight from the file system. If you sell or list the product, host the docs on a page with no prices and no buy buttons, publicly reachable without a purchase code.
Pre-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.jsonis committed. - Admin Status shows no failing blocker.
admin/.envandadmin/data/are not in git (git ls-files adminlists neither).- You have decided, with legal advice, where you offer each venue. See Legal and jurisdiction.