Eric Mutema

Case study 08 of 08

Safari Game Portfolio

A game-style WordPress portfolio theme where visitors explore projects as wildlife sightings, earn XP and unlock achievements.

Role
Designer and developer
Type
Personal project, open source
Timeline
March 2026
Stack
  • WordPress
  • PHP
  • Gutenberg blocks
  • JavaScript
  • CSS
  • WP-CLI

01The Problem

Most developer portfolios look the same, and visitors skim them in seconds.

I wanted a portfolio people would explore, that still stays fully editable in WordPress.

02The Approach

I split it into a classic theme for presentation and a bundled core plugin for content, so projects, skills and testimonials survive a theme change.

Content lives in custom post types, and a small vanilla JS engine turns it into a game. No JS framework, and ACF is optional.

03The Solution

The front page is a single safari console built from blocks.

  • Seven custom post types, including projects, skills, testimonials, achievements and easter eggs, with one global settings option.
  • Twelve server-rendered blocks under safari/*, with live previews in the block editor.
  • A vanilla JS game layer: a boot screen, a HUD, project encounters that award XP, five ranks from Day Tripper to Master Ranger, and achievement toasts. Progress saves in the browser.
  • Seed content from an admin page or wp safari WP-CLI commands, so a fresh install looks complete in minutes.
  • A static demo build that runs from plain HTML with fallback data.

04The Why

Server-rendered blocks keep the content crawlable and editable, with the game layered on top.

Content in a plugin means the work is not lost if the theme changes.

WP-CLI seeding makes the theme quick to install and easy to test.

05The Result

The full theme and plugin are public on GitHub.

06Stack

  • WordPress
  • PHP
  • Gutenberg blocks
  • JavaScript
  • CSS
  • WP-CLI

View repo