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
/secretand/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.
Link
Live at cv.dev.explewd.com/ (for now)