A browser-based, hacking-themed simulation game. You work from a terminal on your own in-game workstation: crack a WiFi network, scan the machines around you, find a way into them, and defend your own box from other players doing the same. Everything is simulated. There are no real hosts or networks, and the "exploits" run on the game's own generated machines.
Live at jshack.me.
- Client: Solid.js + Vite + Tailwind, all in TypeScript (strict)
- Server: Vercel Functions in
api/, backed by Supabase Postgres - Tests: Vitest with jsdom and
@solidjs/testing-library; Stryker for mutation testing;scripts/test*.tswire-checks against a runningvercel dev+ local Supabase
src/
core/ pure TypeScript, no framework (shared by client and server)
adapters/ signed fetch clients for api/, and the cross-tab BroadcastChannel
ui/ Solid components and screens
api/ Vercel Functions: network, patches, sessions
scripts/ build helpers and wire-checks
supabase/ migrations and local stack config
docs/ as-built architecture, conventions, legacy and mission-ideas
plans/ live epic and slice plans
npm install
npm run encode # generates the git-ignored src/core/secrets/__encoded.ts and __plaintext.ts
npx supabase start # local Postgres in Docker
npm run vercel:dev # vite + api/ functions on http://localhost:3100npm run vercel:dev reads .env.development.local, which holds the keys that
npx supabase status -o env prints for the local stack. npm run dev starts Vite without the
functions.
npm run typecheck # tsc -b (src, api and scripts)
npm run lint # eslint
npm run test:run # vitest, once
npm run build # production build, then the world budget check
npm run test:mutation # stryker (a whole-suite run does not finish; scope it, see the handbook ch. 11)Vercel builds the repository root. main deploys to production against the jshack-prod Supabase
project. Every other branch gets a preview deployment against jshack-dev. Schema changes are
Supabase migrations in supabase/migrations/.
New to the project? Start with the maintainer's handbook: architecture, every subsystem, the server and database reference, testing, deployment and known issues. The full documentation index is docs/README.md. Where the project stands is in docs/project-status.md, the long-form conventions and gotchas are in docs/conventions-and-gotchas.md, and deferred work is in docs/backlog.md.
This codebase is v2, a from-scratch rewrite. The original React app is retired: its design is in
docs/legacy/, its source at git tag legacy-final, and its mission ideas
are kept for the missions rebuild in docs/mission-ideas/.
MIT