Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
A personal map of every country you've been to, and when. No account, no server — your map is encoded in the URL. Works offline, installs to your home screen, and uses an equal-area projection so ever
LifestyleHTML · JavaScriptGitHub @amay91OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A personal map of every country you've been to, and when. No account, no server — your map is encoded in the URL. Works offline, installs to your home screen, and uses an equal-area projection so every country's size is honest.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A personal map of every country you've been to, and when.
Click a country (or type its name) to record the years you were there and whether you visited, lived there, or call it home. The map fills in, the count ticks up, and a side panel keeps the whole list sortable. 195 countries plus 45 territories, the territories tracked separately so they never inflate the official count.Read the full README ↗A personal map of every country you've been to, and when.
Click a country (or type its name) to record the years you were there and whether you visited, lived there, or call it home. The map fills in, the count ticks up, and a side panel keeps the whole list sortable. 195 countries plus 45 territories, the territories tracked separately so they never inflate the official count.
Live: amay91.github.io/nomadic-traveller-map
There is no server, no database, and no account. Your map is encoded directly into the page URL — a real map of 13 countries is about 104 characters. Bookmark the link and you've saved your map; email it to yourself and you've backed it up; open it on another device and it's there. Nothing is ever stored anywhere you don't control.
It's also a single static page with zero runtime dependencies. No framework, no bundler, no build step — the deploy workflow copies app/ to GitHub Pages exactly as it sits in the repo. All the hand-written code is about 61 KB.
It works offline and installs like an app. A service worker caches the shell (network-first, so you always get the current version when online), and the manifest makes it installable to a phone home screen.
2011-2014, or 2023- for ongoing, which reads back as "2023–present".No install, no dependencies:
python -m http.server 5180
Then open http://localhost:5180/app/. A real http:// origin is needed only for the service worker and PWA install — everything else works from a double-clicked file.
To run the tests:
node --test tests/*.test.mjs
nomadic-traveller-map.html is the entire app — markup, styles, scripts, geometry and icons — inlined into one ~400 KB file with zero external references. Copy it anywhere and open it; it works with no network and no setup. It exists because opening a multi-file app from a phone's Downloads folder doesn't work: Android hands the browser a content:// URI with no directory, so every relative path resolves to nothing.
Regenerate it with node tools/build-single.mjs.
This repo carries its full design history, not just the code:
| File | What's in it |
|---|---|
product_spec.md | What the product is and why, plus the quality bar |
plan.md | Locked architectural decisions and how it's built |
tasks.md | Status — the source of truth — with every task's acceptance criterion |
handoff.md | Read first if you're picking this up cold; gotchas worth knowing |
docs/design-studies/01-map/ | The nine-round interactive design study the build came from |
Vanilla HTML, CSS and JavaScript, as classic <script> tags rather than ES modules — modules and fetch both fail on file://, and opening by double-click was a requirement.
Geometry is pre-projected at development time rather than at runtime: tools/build-geo.mjs takes Natural Earth's 1:50m data (via world-atlas), projects it with d3-geo's Equal Earth projection, simplifies it, and writes plain SVG path strings to app/geo.js. Equal-area matters here — a map built to compare where you've been shouldn't exaggerate the countries nearest the poles.
The country list follows Worldometers' 195, with UN M49 continents split into North and South America.
Map data from Natural Earth (public domain) via world-atlas, projected with d3-geo. Both are development-time dependencies only — nothing is loaded at runtime.