BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
Firefly Watch, Firefly Trail and Night Watch are two-minute games that check in on reaction time, memory and attention without ever feeling like a test.
GamesTypeScript · CSSGitHub @ShreyanMitra5OnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Three calm, storybook-night games for children that measure cognition without ever feeling like a test. Menus and game introductions use responsive, scrollable layouts. Measured gameplay stays on a fixed 390 × 844 dp reference canvas that scales to fit the screen's safe area.
| # | Game | Task it is built on | What it measures (never shown to the child) |
|---|---|---|---|
| 1 | Firefly Watch | Psychomotor Vigilance Task | median reaction time, lapses, false starts |
| 2 | Firefly Trail | Corsi block-tapping (spatial span) | anchor accuracy, span, tap timing |
| 3 | Night Watch | Mackworth Clock (vigilance) | hits, misses, false alarms, reaction-time steadiness, per-quarter counts |
npm install
npm run dev # http://localhost:3000
npm run build # production build
npx tsx scripts/check-forms.ts # verifies every stored session list against the design rules
npx tsx scripts/check-scoring.ts # self-checks the scoring engine on synthetic logs
npx tsx scripts/check-watch-progress.ts # catch, timeout, and pause/resume regressions
npx tsx scripts/check-trail-response.ts # empty, partial, and complete Done responses
npx tsx scripts/check-night-watch.ts # fixed-length runs and response-window boundaries
Art preview pages (for review only): /dev/skins, /dev/fox, /dev/companions, /dev/scenes, /dev/ui.
/ Welcome — the public landing page with the download button./basecamp Basecamp — the home place: the fox, the three games, the collection of rewards, the grown-ups link. First launch redirects to Choose what you'll catch. The installed app opens here./choose-skin — pick one of six original stimulus skins (firefly, butterfly, friendly pup, comet, glow jelly, star spark)./choose-world — Night Watch world: Forest Friends (fox, lanterns), Space Voyagers (otter astronaut, beacons), Neon Arcade (neon lynx, windows)./firefly-watch, /firefly-trail, /night-watch — the games. Each has Ready → practice → scored play → optional unscored cooldown → All done, plus pause, interruption, and stop-early overlays./settings — change skin / world, sound, reduced motion, text size, high contrast, read instructions aloud, gentle pace, short watch, delete all data./grown-ups — hold-to-enter page with per-game trends against the child's own usual, reliability labels, and per-session delete. The only place numbers appear.scripts/check-forms.ts enforces all of this.requestAnimationFrame). Taps use the pointer event's own timeStamp, not when handler code ran.src/
app/ routes (App Router); each page renders one client screen
components/
Stage.tsx scrollable menus or a 390×844 game canvas; `At` positions game elements in dp
ui/ buttons, chip, pips, speech bubble, reward card, big circle button, overlay
art/ all original vector art: scenes, Fox, Otter, Lynx, six skins, stones, lights, rewards
games/
firefly-watch/ Game 1 engine + screens
firefly-trail/ Game 2 engine + screens
night-watch/ Game 3 engine + screens (three worlds)
basecamp/ choose/ settings/ grown-ups/
lib/
forms/ the stored session lists and timing constants (TUNE values live here)
scoring/ scoring engine and trend series
db.ts encrypted IndexedDB (Dexie + WebCrypto)
session.ts finishSession, interruption hook, frame timing, timers
settings.tsx settings store (localStorage) and accessibility modes
audio.ts synthesised chime and quiet pad; voice instructions
theme.ts the palette from the design document
scripts/
check-forms.ts validates all stored lists
check-scoring.ts scoring engine self-check
gen-nightwatch-forms.mjs one-off generator used to produce the Night Watch forms
Every value marked TUNE in the design doc lives in src/lib/forms/*.ts as a named constant (WATCH_TIMING, TRAIL_TIMING, NIGHT_WATCH_TIMING). Change them there, never in a game file.
The ios/ folder is a Capacitor 8 native app with bundled Next.js screens, fonts, and artwork. It opens at Basecamp and works without a web server or an internet connection. Session history stays on the device. The website and native app have separate local storage.
Requirements: macOS, Xcode 26 or newer, Node.js 22 or newer. The app targets iOS/iPadOS 16.4 and newer. iPhone uses portrait; iPad supports portrait and landscape.
npm ci
npm run ios:sync # build the offline screens and copy them into Xcode
npm run ios:open # open ios/App/App.xcodeproj
In Xcode, choose the App scheme and an iPhone/iPad simulator, then Run. For a physical device, choose your Apple development team under Signing & Capabilities, keep automatic signing enabled, connect your device, select it, and Run. The starter bundle identifier is com.braincompass.basecamp; change it in both capacitor.config.ts and the Xcode target if your team needs a different identifier. Personal signing settings are not stored in the repository.
For a release archive, select Any iOS Device and use Product → Archive. An unsigned archive cannot be installed on a phone; distribution requires a matching signing profile. No App Store or TestFlight upload is performed by these scripts.
Every web-code update needs npm run ios:sync before rebuilding in Xcode. Native builds use a static export in out/; npm run build remains the normal website build. Both build modes use .next/, so stop a running production web server before switching modes, then rebuild it normally before npm start.
The native route handler serves each exported route's index.html, including cold launches, and preserves Next's navigation payloads. The app pauses on native background events. Keep the default capacitor://localhost origin unchanged so existing local history remains accessible. Simulator builds must use Xcode's normal local signing (do not disable signing), because WebKit needs the app identifier to persist its encryption key.
src/lib/audio.ts when they land.finishSession at the real engine when it is ready.The project is a standard Next.js app. Import the GitHub repo into Vercel with the default settings (framework: Next.js, build: npm run build); no environment variables are needed. The landing page is /, the app is /basecamp, and the web manifest installs the app to a phone's home screen from /.
src/lib/scoring) is pure and offline; the trend is ready well inside the 2-second budget. Every measure is labelled experimental until test-retest ICC reaches 0.70 and is excluded from any composite.