← Projects · 2026-04-06

goonk.se

Personal site reboot: simple, fast, and self-hosted.

Link: https://goonk.se

Highlights

  • Astro static site with Markdown-driven project pages
  • Self-hostable via Docker + nginx (plus optional Immich photo proxy)
  • Styled to match the old WordPress vibe, but faster and simpler
  • Hidden easter eggs and achievement system for curious visitors

A complete reboot of my personal site after years of WordPress. The goal was simple: fast, minimal, self-hosted, and fun to maintain.

What it is

  • A small collection of pages: CV, highlights, projects, photos, homelab
  • Markdown-driven project write-ups in src/content/projects/
  • Static site generation with Astro 5.0
  • Dockerized deployment to my own infrastructure
  • Hidden easter eggs and achievements for curious visitors

Why I rebuilt it

Years of WordPress felt heavy. I wanted something where adding a project was just dropping a markdown file in a folder. No database, no plugin updates, no security patches at 2am.

Also wanted full control over hosting and styling without fighting themes.

Tech stack

  • Astro 5.0: Static site generator, fast builds, no client-side JS bloat
  • TypeScript: Type safety for content collections and frontmatter
  • Docker + nginx: Self-hosted deployment with reverse proxy
  • Gitea CI/CD: Automated builds on push to main branch
  • Immich integration: Optional photo proxy for the photos page

Features

  • Content collections: Type-safe markdown with Zod schemas
  • Project pages: Automatic routing from src/content/projects/*.md
  • Debug mode: Hidden developer comments throughout (click the “Updated” date)
  • Easter eggs: 19 hidden achievements for explorers (Konami code, typed commands, URL params, secret pages)
  • Achievement system: LocalStorage-persisted tracking with milestone rewards
  • Photo integration: Pull images from self-hosted Immich instance
  • Responsive design: Works on mobile, doesn’t look like 1998 (unless you trigger ?1998=true)

Fun stuff

The site has a complete achievement system with easter eggs scattered throughout:

  • Hidden pages at /secret and /hiring
  • Konami code (↑↑↓↓←→←→BA)
  • Typed commands (try typing “gravity”)
  • URL parameters (?matrix=true, ?coffee=true, ?dark=true)
  • Time-based surprises (visit between midnight and 4am)
  • Interactive elements (click the profile photo 10 times)
  • Paint mode, vim mode, emacs mode
  • And more…

Check out the /achievements page to see what you’ve unlocked.

Deployment

Runs in Docker on my homelab, built automatically via Gitea CI whenever I push to main:

docker compose up -d

The container serves static files via nginx, with optional reverse proxy configuration for the Immich photo backend.

Live at cv.dev.explewd.com/ (for now)