Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,7 @@ jobs:
run: go build ./...

- name: Static JavaScript syntax check
run: node --check static/js/main.js
run: |
for f in static/js/*.js; do
node --check "$f"
done
41 changes: 41 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Hack the Planet

A cinematic hacker-movie simulator by [Kastro Labs](https://kastro.is). Live at [htp.kastro.is](https://htp.kastro.is).

**Mash any keys. Become a movie hacker.** Pick a fictional target, type literally anything while convincing code pours out of your fingertips, survive the firewall counterattack, crack the password one glowing character at a time, siphon the files, and walk away with a mission report worth screenshotting.

It is 100% fiction. Nothing is scanned, contacted, or harmed. Every target is invented, every exploit is theatre, and the only thing under attack is realism.

## How it plays

1. **Boot** — BIOS theatrics. The reality driver is intentionally NOT FOUND.
2. **Jack in** — pick a two-word hacker handle with zero humility (or randomize one).
3. **Pick a target** — THE GIBSON, an orbital disco satellite, an evil bank's bonus pool, or the Global Genius Database.
4. **The run** — type *anything*; any keys work. Fill the ACCESS meter, out-type the TRACE during the firewall counterattack (go idle and you *will* get traced), then keep mashing through the exfil.
5. **Debrief** — keystroke stats, trace peak, an operator rating from SCRIPT KIDDIE to ZERO COOL CERTIFIED, and a copyable mission report.

Extras: `ESC` summons a boss-screen spreadsheet, sound is synth-only and off by default, the world map decodes real TopoJSON with zero libraries, and the whole thing works on a phone via the big MASH button.

## Running it

```bash
go run . # http://localhost:8080
PORT=3001 go run . # any port you like
```

One Go binary, all assets embedded, no runtime dependencies, no database, no analytics, no network calls except serving itself.

## Stack

- **Server:** Go standard library only (`embed` + `net/http`), ~100 lines.
- **Frontend:** vanilla ES modules, two canvases, CSS. No frameworks, no build step.
- **Audio:** WebAudio oscillators, generated on the fly.

## Checks

```bash
gofmt -l .
go test ./...
go vet ./...
go build ./...
```
300 changes: 0 additions & 300 deletions generators.go

This file was deleted.

2 changes: 0 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
module hacktheplanet

go 1.26.2

require github.com/coder/websocket v1.8.14
2 changes: 0 additions & 2 deletions go.sum

This file was deleted.

Loading