Help

Playing: the arcade, the crossword, trivia, streaks and coins

CLT Explorer has a small arcade of seven cabinets, a set of five crosswords, a trivia hunt, a day-chained streak, a cosmetic currency called Mint Coins, and a leaderboard with two halves. None of it needs an account, none of it can be bought, and none of it is redeemable for anything. Where something is a placeholder or is not finished, this page says so rather than describing the finished version.

Updated: 2026-08-20


Contents

  1. The short version
  2. The arcade — all seven cabinets
  3. The crossword
  4. Trivia and the district packs
  5. Streaks, and how they actually work
  6. Mint Coins and the reward economy
  7. The leaderboard and "your standing"
  8. Where your progress lives
  9. What you will and won't see: ads on play surfaces
  10. What is not finished

1. The short version

  • No account required, ever. Signed-out play, and play by anyone under 13, is a permanent, fully supported mode — not a trial that nags you toward a sign-up. Your browser is the real save file, by design.
  • Nothing costs money and nothing pays out. Mint Coins cannot be bought and cannot be redeemed for money, goods or a discount. There is nothing anywhere in the app to spend them on.
  • Progress lives in this browser. An account is optional and adds one thing: a place on the season leaderboard.
  • If storage is blocked, the games still play. They just don't remember.

2. The arcade — all seven cabinets

The arcade lives at /games. One registry builds the hub doors, the games index and the server's list of badges it will accept, so the list below is the whole arcade with nothing omitted.

CabinetRouteWhat it is
Crossword/games/crosswordFive grids cut from the guide itself — every answer is a real Charlotte place, person or fact, and every clue is quoted from that thing's own record. The only cabinet with no canvas in it.
Shiny Rock Hunt/games/shiny-rock-huntWade a Piedmont creek turning rocks before the daylight goes, cut from the 1799 Reed gold find. Almost every rock is just a rock — that is the point, and a find means something.
The Foundry/games/the-foundryRun the converted arsenal as a working foundry: choose each shift's order, keep the forge, rolling mill, lathe and casting floor moving before pieces spoil, bank three shifts of pay.
Gold Line Operator/games/gold-line-operatorDrive the CityLynx Gold Line streetcar, West End to Elizabeth — brake into each platform window, then roll the signal blocks through Center City. Includes an 1891 electric-trolley mode.
The Trading Path/games/trading-pathA turn-based travel-and-barter run over the city's founding diagram: two trading paths, one crossing (the one that became Trade & Tryon), an eight-slot pack limit, and arrive worth more than you set out with.
Franchise/games/franchiseTwelve seasons of getting a club off the ground and then keeping it, one corpus-seeded decision each — an expansion fee, a sellout streak the record counts two ways, a failed referendum, a relocation ultimatum. Score is seasons kept × fan trust.
Cabin Constructor/games/cabin-constructorA log-cabin layout puzzle: a shuffled plot, a log budget, walls that cost by the real rules of the material, and amenities (hearth, loft, cellar, porch) that must go where they actually work.

What every cabinet shares. Six of the seven persist a single best score under their own key (clt-<slug>-highscore), highest-wins — a run only replaces your best if it beats it, and that replacement is what raises the "New best!" pill. The crossword is the exception: it saves half-finished work, not a score (see below). Six of the seven award a one-time completion badge on your first finished run (badge:<slug>:first-…).

The chrome is shared too. One shell draws the ready, paused and game-over overlays for every real-time cabinet, to a written accessibility contract: focus moves to the overlay's primary button on a phase transition (never on first paint), the game-over overlay is a polite live region so your result is announced without interrupting a screen reader mid-sentence, every control is a real <button>, and reduced-motion settings remove the "New best!" pulse without removing the pill.


3. The crossword

Five grids, 83 clues between them — blue-line (16 entries, 15×15), eat-like-a-local (19, 15×15), gold-and-growth (14, 15×15), people-of-clt (13, 13×13) and the-whole-city (21, 15×15). The counts on the page are computed from the puzzle file, not typed, so they cannot go stale.

These are freeform (criss-cross) grids, not American-style symmetric ones, and the card under the player says so rather than letting you discover it. The reason is stated in the build script: a symmetric 15×15 needs roughly 78 entries and this city does not contain 78 crossable proper nouns, so filling one would mean importing a dictionary and most of the puzzle would stop being about Charlotte. The trade was made deliberately, and what it buys is that every single answer is a real thing here — THRASHERS is clued with what the guide says about Thrasher's.

It is a real DOM grid, so the keyboard works properly. Arrow keys move a cursor; Space toggles between Across and Down; Home and End jump to the ends of the current entry; Tab moves to the next clue and Shift+Tab to the previous, except from the last and first entries, where the browser's own focus order takes over so the grid is never a keyboard trap; Escape leaves the grid for the clue list. One square in the grid is the tab stop and the rest are skipped, so the whole grid is a single stop from outside.

Each square announces its own coordinates and clue context on arrival — "Row 4, column 7. 12 Across, letter 3 of 9. Also 5 Down." — and a single polite status region at the foot of the player announces entry changes, direction toggles, check results, reveals and completion. Individual letters are deliberately not announced.

Progress is saved per puzzle, not as a score. A crossword is a half-finished piece of work: it is never "beaten", it is resumed, and the letters you typed twenty minutes ago are yours. All five puzzles share one key, clt-crossword-progress, holding a record per puzzle of your letters, whether it's solved, and whether you used Reveal. Reveal sets an honesty flag that is never cleared except by clearing the puzzle, and the completion screen says so in words — a badge earned with a revealed letter is not one the surface will call perfect.


4. Trivia and the district packs

/trivia holds 31 distinct questions across the district packs and City Smart. Three rounds are on offer:

  • The whole-city round — one question from every district that has a pack, in city order. Currently 14 questions, a genuine tour of the whole map. It is a subset of the others, not extra questions, and because rewards are keyed by question id, a question answered here and again in its district round pays exactly once.
  • City Smart10 questions on the practical rules: fares, parking, the wards, brewery etiquette. Every answer is something the guide states and cites on the Answers page.
  • The district rounds — one per district with authored questions, most of them two questions, some one.

All three counts come from one source, and the page states the relationship between them, so the play page and the answer key at /trivia/answers cannot drift apart.

The answer key is not on the play page. /trivia/answers is its own route, behind a door labelled "answers", so nobody is spoiled by scrolling.

A wrong answer is not a dead end: at a place, getting the trivia wrong still records your check-in, and the trivia bonus stays available to claim later. That is why check-ins and trivia-correct are tracked as separate maps rather than one.


5. Streaks, and how they actually work

A streak is consecutive days you actually played, and it is never seeded.

  • The day boundary is Charlotte's, not your device's and not UTC. Day keys are computed in Charlotte's own time zone. A UTC boundary would cut every Charlotte evening after 8pm EDT into "tomorrow", so a family playing after dinner two nights running would be told their streak was one day long.
  • What counts as a day played is the union of two things: a day banked when you finish something (a trivia round, a game run) — recorded even if the round earned nothing, because a day you played badly is still a day you played — plus the day of every timestamp already sitting in your check-ins, badges, stamps and trivia-correct records. Crediting those is the opposite of seeding: they are days you really did play.
  • Banking today is idempotent. Play six rounds and you have played one day.
  • A day in progress is not a broken streak. The chain ends on today if today counts, otherwise on yesterday.
  • You are warned only when there is something real to lose. The "at risk" state is true only when you have a live chain of at least one day and today is not yet banked, and the hours remaining are measured against the real Charlotte midnight, not estimated.
  • There are no streak freezes, no grace days, no repair purchases and no notifications, and that is a decision, not an omission: a grace day is a streak that is not a streak.

The card shows your current run, your best run ever, and the last seven days.


6. Mint Coins and the reward economy

Mint Coins are the site's cosmetic currency — the city that held the first U.S. branch mint pays in coins. They are never redeemable for money, goods or discounts, and there is nothing anywhere on the site to spend them on. If you look in your browser's storage you will find the balance filed under an older name, clt-sand-dollars, inherited from the first city in this network. It is one currency with two names, and renaming the key would wipe everyone's balance, so it stays.

Be aware: the amounts are explicitly placeholders. The file that sets them says so about itself — "balancing pending; these are placeholder values for testing" — so the numbers below are provisional and are expected to change. As of 2026-08-20 they are:

Doing thisPaysEarning this badgePays
Visiting a place (check-in)10District stamp25
Completing a tour50Fest badge50
Adding a first photo25Collection tier30
Writing a review15Tour completion50
Answering trivia correctly5Achievement20

No number is hardcoded anywhere. Your browser and the server both price an action from the same single file, which is what makes the pending balancing pass one edit rather than a hunt — and is also why your browser and your account can never disagree about what a check-in was worth.

An action pays for a given thing exactly once. On the server that is a database constraint, not application logic; locally, the first check-in at a place wins the timestamp and later ones don't overwrite it. Reviews say this out loud: re-reviewing a place you already reviewed earns nothing more, and one star pays the same as five.


7. The leaderboard and "your standing"

/leaderboard has two halves, in this order:

1. Your saved rounds. The board the trivia score screen actually saves to, under the handle and mark you chose there, held in this browser (clt-trivia-runs, identity in clt-player). It is a real board — it is simply your board, and the copy says so. There are no invented rivals, no seeded names, no ghost scores and no "you're in the top 12%", because a leaderboard with fictional players on it is a lie the first honest visitor catches. With no saved runs the page shows a door, not an error.

2. The season board. Account-backed, and honestly framed as the thing an account adds rather than as the page's only content.

Seasons are calendar years, January to January. Charlotte is not a seasonal town, so there is no summer reboot to bucket on; the honest competitive period is the year. The reset exists so a completionist from an earlier year doesn't sit on top forever — a newcomer can always compete come January. The reset is to rank, never to possessions: the ledger keeps everything, and the all-time record is every year summed.

If there's no database configured or it's unreachable, the page still renders — and the half that matters to a signed-out visitor is completely unaffected, because that half never needed a database.


8. Where your progress lives

In this browser, in localStorage. That is the design, not a stopgap. The keys are flat and one per concern so you can inspect them in devtools:

KeyHolds
clt-sand-dollarsYour Mint Coin balance (a single number)
clt-checkins{ place: first-check-in time }
clt-badges{ badge: earned time }
clt-stamps{ district: stamped time }
clt-trivia-correct{ question: answered time }
clt-play-days{ day: time } — the streak's own record
clt-crossword-progressLetters, solved and revealed flags for all five puzzles
clt-<slug>-highscoreOne integer best per scoring cabinet
clt-player, clt-trivia-runsYour handle and mark, and your saved trivia runs

If storage is unavailable, nothing breaks. Private browsing quota, disabled storage and server rendering all degrade to "state just doesn't persist", silently — never an error message, never a blocked game. Every read and write goes through one small pair of functions that swallow the failure.

Clearing your browser data clears your game. There is no local backup and no undo.

Optional account sync. If you sign in and your account is active (which means you passed the 13+ age gate), the browser syncs to the server:

  • Events are sent, never totals. What crosses the wire is "I checked in at this place at this time", "I got this trivia bonus", "I hold this badge". Your Mint Coin balance is never transmitted and would be ignored if it were — the server re-prices every event against data/economy.json itself and verifies every reference against the real dataset, so a made-up place or an unregistered badge is rejected rather than paid.
  • Signing in is the claim. There is no separate "claim your progress" step: the first successful sync after signing in submits your entire local history in one batch, and the server de-duplicates it. Doing it repeatedly is harmless.
  • Your local game is never deleted after a sync. You keep the offline game; the server keeps the scoreboard.
  • Signing out forgets the sync bookkeeping, so a second person signing in on the same browser claims their own progress correctly rather than inheriting the first person's.
  • "Nobody to sync to" is a normal state, not an error. Anonymous, age gate unanswered, no auth configured, no database — all of these return a plain success meaning "keep using localStorage", and the app never turns that into a nag to make an account.
  • Syncing is debounced (a burst of check-ins on one block is one request), re-runs slowly in the background, and catches up when you return to the tab. Being offline is not an error you'll be shown.

Once signed in, the number on your screen is a sum over the server's append-only ledger rather than a counter this browser has been incrementing. A generous daily cap on tap check-ins applies server-side; it is documented honestly as raising the cost of casual farming, not as stopping a determined cheater.


9. What you will and won't see: ads on play surfaces

Advertising is not open on the Charlotte edition yet. /advertise is a deliberate "not open yet" page: the model is built, but which categories North Carolina permits is under legal review, and the page refuses to sell anything or quote mechanics until that closes. The page stays live and in the navigation because "not open yet" is an honest answer to a business that comes looking, and a 404 is not.

There are no ad slots on any game, trivia or leaderboard surface today. Where ads do appear — the home page and the news section — they carry an unconditional "Sponsored" label and a visually distinct frame, and any news item flagged as ad-free renders no ad at all. Safety, accessibility and heritage pages carry no advertising at any price. See About for the short version of that firewall.


10. What is not finished

Stated here rather than discovered by you.

  • The coin amounts are unbalanced on purpose. They are marked as placeholders in the file that sets them, pending a balancing pass. Treat every number in §6 as provisional — and note that a rebalance changes what future actions pay, never what you already hold.
  • Six of the seven cabinets ship placeholder art. The little voxel mark on a cabinet's door is currently borrowed from another game — the Foundry wears a coin stack, Cabin Constructor a lighthouse. The games themselves are finished; the icons are not.
  • The whole-city trivia round will get longer. It takes one question from every neighborhood that has a pack, so it is 14 questions today because 14 neighborhoods have packs. Author a fifteenth and the round becomes 15 without anyone editing a number. It is a subset of questions you can meet elsewhere, never extra ones, and a question pays its bonus exactly once however you reach it.
  • Mint Coins answer to an older name in storage. See §6. Cosmetic; nothing behaves differently.

See also: the arcade · trivia · the leaderboard · About