goonk.se / project lineage

Family Resemblance

Not a Utilities/Games filing cabinet — a family tree. Follow the protocols, patterns, worlds, and lessons that moved from one project into the next.

Circles are projects, diamonds are worlds, dashed squares are shared systems, rings are outputs. Line weight is the strength of the bond — solid for direct lineage, dotted for a lighter influence. Click a name to follow its family; click a line to see what actually crossed over.

Derived fromReuses patternShares infrastructureShares protocolSupplies contentCarries lessonObserves
Trust & transport
waste-go project

A modern reimagining of WASTE — encrypted P2P chat and file sharing over WebRTC, with no server in the data path.

Project write-up →
  • To flit: Trust model, made smaller. flit retains waste-go’s anchor signalling, WebRTC data channels, Ed25519 identity, and YAW/2.1 handshake, then removes chat, mesh, and presence in favour of QR-paired file transfer. flit project, waste-go case study
flit project

Ephemeral, end-to-end encrypted file transfer between your own devices. AirDrop for people who self-host.

Project write-up →
  • From waste-go: Trust model, made smaller. flit retains waste-go’s anchor signalling, WebRTC data channels, Ed25519 identity, and YAW/2.1 handshake, then removes chat, mesh, and presence in favour of QR-paired file transfer. flit project, waste-go case study
  • To wisp: Synchronous becomes asynchronous. flit’s direct path requires both devices online. wisp accepts encrypted server storage so the recipient can arrive later, while keeping decryption keys outside the server. wisp project
wisp project

Short-lived, end-to-end encrypted file sharing. Upload once, the recipient retrieves it later, and then it's gone for good.

Project write-up →
  • From flit: Synchronous becomes asynchronous. flit’s direct path requires both devices online. wisp accepts encrypted server storage so the recipient can arrive later, while keeping decryption keys outside the server. wisp project
Small applications
galr project

Self-hosted private image gallery for browsing large photo collections organized in a flexible hierarchy.

Project write-up →
  • To stash: Small SSR + SQLite application. stash repeats galr’s bet on a small server-rendered self-hosted service backed by an embedded database, adapting it from photographs to extracted articles. galr project, stash project
  • To latent: Personal material, focused browser. latent reuses the ingestion and organization lessons from a private personal archive without pretending the two applications share a package. galr project, latent project
stash project

Self-hosted read-later. Click 'Send to stash' in the browser, the article's content is extracted and stored on your own server — full-text searchable, no third party ever sees your reading list.

Project write-up →
  • From galr: Small SSR + SQLite application. stash repeats galr’s bet on a small server-rendered self-hosted service backed by an embedded database, adapting it from photographs to extracted articles. galr project, stash project
latent project

A phone-photo editor with a 'develop it later' option. Film-style effects in the browser, then download instantly or send it off to develop behind a randomized hours-to-days delay.

Project write-up →
  • From galr: Personal material, focused browser. latent reuses the ingestion and organization lessons from a private personal archive without pretending the two applications share a package. galr project, latent project
Delve world
Delve (a roguelike) world

A fun little roguelike experiment — quick runs, weird builds, and learning-by-doing.

Project write-up →
  • To Delve: Ashes of the Pale Flame: Same world, different combat. Classes, biomes, enemies, and bosses move into a deckbuilder, while dungeon movement becomes cards, relics, and a branching act map. Delve, deckbuilder project
  • To Chronicle & lore: Game becomes reusable world. The setting’s characters, bestiary, factions, and history are kept as a shared compendium instead of being trapped inside one game loop. Delve compendium, Delve case study
Delve: Ashes of the Pale Flame project

A Slay-the-Spire-style deckbuilder set in the Delve universe — same lore, different combat. Build a deck, descend three acts, fight the Pale King.

Project write-up →
  • From Delve (a roguelike): Same world, different combat. Classes, biomes, enemies, and bosses move into a deckbuilder, while dungeon movement becomes cards, relics, and a branching act map. Delve, deckbuilder project
Chronicle & lore world

Reusable narrative, bestiary, characters, and places kept outside any single combat system.

  • From Delve (a roguelike): Game becomes reusable world. The setting’s characters, bestiary, factions, and history are kept as a shared compendium instead of being trapped inside one game loop. Delve compendium, Delve case study
  • To World assets: Lore directs assets. Named creatures, places, characters, and factions provide the identity that the shared art and asset pipeline must carry. Delve compendium, deckbuilder project
World assets system

Art, creature identity, locations, and the asset pipeline shared across presentations of the world.

  • From Chronicle & lore: Lore directs assets. Named creatures, places, characters, and factions provide the identity that the shared art and asset pipeline must carry. Delve compendium, deckbuilder project
Operations
keep project

A self-hosted, end-to-end encrypted secrets store for deploy scripts. keep pull myapp/production gets you a decrypted .env — the server never sees plaintext, or the key that would let it.

Project write-up →
  • To Deployments: Secrets arrive at runtime. Deploy identities pull encrypted environment bundles from keep and decrypt locally, separating configuration in Git from secret values on the host. keep case study, Under the hood
Deployments system

The build, registry, secret retrieval, Compose, health, and receipt path shared by deployed projects.

  • From keep: Secrets arrive at runtime. Deploy identities pull encrypted environment bundles from keep and decrypt locally, separating configuration in Git from secret values on the host. keep case study, Under the hood
  • To Under the hood: Private machinery, public explanation. Sanitized build identity, artifact flow, trust boundaries, and health behaviour supply the evidence shown on Under the Hood. Under the hood
  • To trace: Deployment receipts. The deployment path can emit allowlisted receipts so incidents can be compared with the builds immediately before and after them. Under the hood, Failure museum
Under the hood output

The sanitized public explanation of how source becomes a running, observable deployment.

  • From Deployments: Private machinery, public explanation. Sanitized build identity, artifact flow, trust boundaries, and health behaviour supply the evidence shown on Under the Hood. Under the hood
  • From Homelab observability: Runtime health beside build identity. Operational health complements the deployment story without publishing raw metrics, internal labels, or private topology. Under the hood, homelab case study
trace project

An in-progress private incident notebook designed to correlate evidence, commits, and deployment receipts.

  • From Deployments: Deployment receipts. The deployment path can emit allowlisted receipts so incidents can be compared with the builds immediately before and after them. Under the hood, Failure museum
  • To Failure museum: Private evidence, reviewed lesson. Trace publishes an explicitly reviewed Markdown projection. The site consumes it at build time while private evidence and working notes remain inside Trace. Failure museum
  • To Homelab observability: Incidents point back to signals. An incident can cite observed service health and metrics, while the monitoring stack remains the authority for current operational state. Failure museum, homelab
Failure museum output

Reviewed public accounts of bugs, dead ends, and wrong assumptions—never an automatic error feed.

  • From trace: Private evidence, reviewed lesson. Trace publishes an explicitly reviewed Markdown projection. The site consumes it at build time while private evidence and working notes remain inside Trace. Failure museum
npm-statuspage project

A small service that reads proxy hosts from Nginx Proxy Manager and HTTP-checks them on a schedule. Serves a live status page and a JSON API.

Project write-up →
  • To Homelab observability: Public service health. npm-statuspage discovers reverse-proxy hosts and checks them, supplying a deliberately small public view of homelab availability. npm-statuspage, homelab
Homelab observability system

The operational view combining service health, metrics, and deliberately public status.

  • From npm-statuspage: Public service health. npm-statuspage discovers reverse-proxy hosts and checks them, supplying a deliberately small public view of homelab availability. npm-statuspage, homelab
  • To Under the hood: Runtime health beside build identity. Operational health complements the deployment story without publishing raw metrics, internal labels, or private topology. Under the hood, homelab case study
  • From trace: Incidents point back to signals. An incident can cite observed service health and metrics, while the monitoring stack remains the authority for current operational state. Failure museum, homelab
Every connection, reading order

The same data as the graph, complete with JavaScript disabled.

Trust & transport
waste-goproject
Project write-up →
  • → flit: Trust model, made smaller. flit retains waste-go’s anchor signalling, WebRTC data channels, Ed25519 identity, and YAW/2.1 handshake, then removes chat, mesh, and presence in favour of QR-paired file transfer. flit project, waste-go case study
flitproject
Project write-up →
  • ← waste-go: Trust model, made smaller. flit retains waste-go’s anchor signalling, WebRTC data channels, Ed25519 identity, and YAW/2.1 handshake, then removes chat, mesh, and presence in favour of QR-paired file transfer. flit project, waste-go case study
  • → wisp: Synchronous becomes asynchronous. flit’s direct path requires both devices online. wisp accepts encrypted server storage so the recipient can arrive later, while keeping decryption keys outside the server. wisp project
wispproject
Project write-up →
  • ← flit: Synchronous becomes asynchronous. flit’s direct path requires both devices online. wisp accepts encrypted server storage so the recipient can arrive later, while keeping decryption keys outside the server. wisp project
Small applications
galrproject
Project write-up →
  • → stash: Small SSR + SQLite application. stash repeats galr’s bet on a small server-rendered self-hosted service backed by an embedded database, adapting it from photographs to extracted articles. galr project, stash project
  • → latent: Personal material, focused browser. latent reuses the ingestion and organization lessons from a private personal archive without pretending the two applications share a package. galr project, latent project
stashproject
Project write-up →
  • ← galr: Small SSR + SQLite application. stash repeats galr’s bet on a small server-rendered self-hosted service backed by an embedded database, adapting it from photographs to extracted articles. galr project, stash project
latentproject
Project write-up →
  • ← galr: Personal material, focused browser. latent reuses the ingestion and organization lessons from a private personal archive without pretending the two applications share a package. galr project, latent project
Delve world
Delve (a roguelike)world
Project write-up →
  • → Delve: Ashes of the Pale Flame: Same world, different combat. Classes, biomes, enemies, and bosses move into a deckbuilder, while dungeon movement becomes cards, relics, and a branching act map. Delve, deckbuilder project
  • → Chronicle & lore: Game becomes reusable world. The setting’s characters, bestiary, factions, and history are kept as a shared compendium instead of being trapped inside one game loop. Delve compendium, Delve case study
Delve: Ashes of the Pale Flameproject
Project write-up →
  • ← Delve (a roguelike): Same world, different combat. Classes, biomes, enemies, and bosses move into a deckbuilder, while dungeon movement becomes cards, relics, and a branching act map. Delve, deckbuilder project
Chronicle & loreworld
  • ← Delve (a roguelike): Game becomes reusable world. The setting’s characters, bestiary, factions, and history are kept as a shared compendium instead of being trapped inside one game loop. Delve compendium, Delve case study
  • → World assets: Lore directs assets. Named creatures, places, characters, and factions provide the identity that the shared art and asset pipeline must carry. Delve compendium, deckbuilder project
World assetssystem
  • ← Chronicle & lore: Lore directs assets. Named creatures, places, characters, and factions provide the identity that the shared art and asset pipeline must carry. Delve compendium, deckbuilder project
Operations
keepproject
Project write-up →
  • → Deployments: Secrets arrive at runtime. Deploy identities pull encrypted environment bundles from keep and decrypt locally, separating configuration in Git from secret values on the host. keep case study, Under the hood
Deploymentssystem
  • ← keep: Secrets arrive at runtime. Deploy identities pull encrypted environment bundles from keep and decrypt locally, separating configuration in Git from secret values on the host. keep case study, Under the hood
  • → Under the hood: Private machinery, public explanation. Sanitized build identity, artifact flow, trust boundaries, and health behaviour supply the evidence shown on Under the Hood. Under the hood
  • → trace: Deployment receipts. The deployment path can emit allowlisted receipts so incidents can be compared with the builds immediately before and after them. Under the hood, Failure museum
Under the hoodoutput
  • ← Deployments: Private machinery, public explanation. Sanitized build identity, artifact flow, trust boundaries, and health behaviour supply the evidence shown on Under the Hood. Under the hood
  • ← Homelab observability: Runtime health beside build identity. Operational health complements the deployment story without publishing raw metrics, internal labels, or private topology. Under the hood, homelab case study
traceproject
  • ← Deployments: Deployment receipts. The deployment path can emit allowlisted receipts so incidents can be compared with the builds immediately before and after them. Under the hood, Failure museum
  • → Failure museum: Private evidence, reviewed lesson. Trace publishes an explicitly reviewed Markdown projection. The site consumes it at build time while private evidence and working notes remain inside Trace. Failure museum
  • → Homelab observability: Incidents point back to signals. An incident can cite observed service health and metrics, while the monitoring stack remains the authority for current operational state. Failure museum, homelab
Failure museumoutput
  • ← trace: Private evidence, reviewed lesson. Trace publishes an explicitly reviewed Markdown projection. The site consumes it at build time while private evidence and working notes remain inside Trace. Failure museum
npm-statuspageproject
Project write-up →
  • → Homelab observability: Public service health. npm-statuspage discovers reverse-proxy hosts and checks them, supplying a deliberately small public view of homelab availability. npm-statuspage, homelab
Homelab observabilitysystem
  • ← npm-statuspage: Public service health. npm-statuspage discovers reverse-proxy hosts and checks them, supplying a deliberately small public view of homelab availability. npm-statuspage, homelab
  • → Under the hood: Runtime health beside build identity. Operational health complements the deployment story without publishing raw metrics, internal labels, or private topology. Under the hood, homelab case study
  • ← trace: Incidents point back to signals. An incident can cite observed service health and metrics, while the monitoring stack remains the authority for current operational state. Failure museum, homelab