Skip to content
← All projectsPersonal Work // Self-Hosted Tooling

SPNKr

Replacing a $30/month game server rental with a spare PC, then redesigning the dashboard out of default AI output.

View on GitHub →
RoleSolo, Design & Build
DisciplineProduct Design · Art Direction · Frontend
StackNode · Socket.IO · SQLite · Vanilla JS
StatusRunning in production, at home
Context

Paying $30 a month to rent a game server, with a spare PC sitting idle.

My role

Solo: product design, art direction, and the build on Node, Socket.IO, SQLite and vanilla JS.

Outcome

Eight games self-hosted and controllable from Discord, open-sourced, with an art direction that a script enforces on every run.

The redesigned SPNKr dashboard
Role & boundaries
I owned
  • The product: install, update, back up, and restart every server
  • The art direction spec, and the script that enforces it
  • The frontend, the server, and the Discord controls
  • Setup instructions written for humans and AI agents
Constraints
  • One spare home PC, home internet, port forwarding
  • The first dashboard was generated; the redesign had to undo its defaults
  • [Who plays on it, and what they asked for]
Overview

Eight games on a spare PC.

Replaced a $30/month game server rental with a spare PC running eight games, controllable from Discord. Then redesigned the dashboard out of default AI output: warm gunmetal instead of consumer blue-black, borders doing the work instead of shadows, with the art direction spec enforced by a script that checks sixteen rules against the code on every run.

$30
Monthly server rental retired
8
Games running on one spare PC
16
Art direction rules checked by script on every run
Before / After
The original SPNKr dashboard before the redesign
Before. The original design.
The redesigned compact SPNKr dashboard
After. The redesigned dashboard, compact view.
Key decisions

Self-host instead of renting

Options
Keep the $30/month rental; or run every server on a spare PC at home.
Why
[Beyond the money: control, more games, learning.] One machine now runs eight games.
Trade-off
[Draft: I became the ops team: uptime, updates, backups, and port forwarding, which is why the dashboard walks through them.]

Control it from Discord

Options
A dashboard only; or Discord controls alongside it.
Why
[Why Discord: it’s where the group already is.]
Trade-off
[What Discord can’t do that the dashboard can.]

Redesign out of default AI output

Options
Ship the first generated dashboard; or give it a real art direction.
Why
Warm gunmetal instead of consumer blue-black, borders doing the work instead of shadows. [What the default looked like and why it didn’t fit.]
Trade-off
[Time spent redesigning a tool only you and friends use; why it was worth it.]

Enforce the spec with a script

Options
A written art direction spec that people and agents are trusted to follow; or a script that checks sixteen rules against the code on every run.
Why
[Why: e.g. AI-generated changes drift back to defaults unless something checks them.]
Trade-off
[Rules only catch what they can see in code; what slipped through anyway.]
Looking back

What I’d do differently

[One honest answer: e.g. a rule you’d add to the checker, or something you’d build before the redesign.]

Gallery
In the wild

Free and open source.

Setup instructions are written for humans and AI agents alike.