Recompia
Pokémon Pokopia (Switch 2) recompiled to run natively on Windows with Linux/Handheld support. Multiplayer included, modding, feature enhancements and more! Join the discord community as well
Translation pending
Sail an endless unclaimed world. First to arrive names each place forever.
Translation pending
GamesTypeScript · JavaScriptGitHub @miguelgarglezOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Sail an endless unclaimed world — first to arrive names each place forever
Translation pending
Loading the full README. The saved excerpt is shown below.
Sail an endless procedural archipelago drawn as a hand-engraved nautical
chart. Every red pennant is a place nobody has named yet. Reach one, give it
a name, and it is inked onto the chart — permanently, for every sailor who
comes after you.
https://github.com/miguelgarglez/nullius/assets/launch.mp4 ·
docs/launch.mp4Read the full README ↗a chart of unclaimed lands
Sail an endless procedural archipelago drawn as a hand-engraved nautical chart. Every red pennant is a place nobody has named yet. Reach one, give it a name, and it is inked onto the chart — permanently, for every sailor who comes after you.
https://github.com/miguelgarglez/nullius/assets/launch.mp4 · docs/launch.mp4
nullius.claims, feature_key primary key, read-all/insert-only RLS).
A race is settled atomically by the database: the loser's card keeps a
durable "your name arrived too late" verdict beside the winner.npm install
npm run dev # http://localhost:5173
Without env vars it sails offline — the chart works, claiming waits for a ledger. To run against your own Supabase project:
supabase/migrations/ in order. The second migration creates the
live table in its own nullius schema (public.nullius_claims is the
retired first ledger; a fresh install can safely skip migration one).nullius (keep public and graphql_public).
Or with a Management API token:
PATCH /v1/projects/<ref>/postgrest with {"db_schema":"public,graphql_public,nullius"}.cp .env.example .env.local # or create it:
# VITE_SUPABASE_URL=https://<project>.supabase.co
# VITE_SUPABASE_PUBLISHABLE_KEY=<publishable key>
| input | action |
|---|---|
| drag / touch | sail (fast release carries momentum) |
| scroll / pinch | zoom |
| tap a red pennant | name that place |
logbook | every reachable place in view, keyboard-operable |
? | bring back the sailing notes |
Esc | close whatever is open |
#x,y,scale | shareable bearing — the ref on any plaque copies one |
Honors prefers-reduced-motion (glides and the sink ceremony settle
instantly), keeps every target ≥44px on a 375px screen, and stays readable
when the ledger is unreachable — the chart keeps sailing offline and the
form never loses what you typed.
Vite + React + TypeScript, one canvas, zero map libraries. Supabase Postgres
for the claims ledger (schema nullius of a shared project), realtime for
presence and new inscriptions. A Cloudflare cron worker (keepalive/) reads
one row once a day as a best-effort nudge against free-tier pausing — it helps,
but Supabase can still pause an idle project — deploy it with
npx wrangler deploy from keepalive/ after npx wrangler secret put SUPABASE_KEY. Deployed on Vercel.
docs/launch.mp4 was shot when the ledger ran elsewhere and shows a naming
("Cabo de la Primera Luz") that does not exist on this chart. The ledger was
moved and started empty — every name you see now was left by a real sailor.
The film stays because it still shows the ceremony faithfully.
MIT — sail on.