← All projects

shpetimgashi.com - Portfolio & Interactive CV

The site you are reading. One schema-validated data file drives the rendered CV and the project pages, with a playable 16-bit game CV in Phaser in development against the same source.

  • Astro
  • TypeScript
  • Phaser
  • Zod
  • Vitest
  • Playwright
  • GitHub Actions
  • Cloudflare Pages

Overview

This site. A conventional CV can describe front-end work but cannot demonstrate it, and maintaining the same career data across a PDF, a web page, and anything interactive guarantees the three will drift apart. The portfolio was built to solve both problems at once: it is itself the evidence, and it has exactly one place where the data lives.

Architecture

Single source of truth

Every piece of CV content - experience, education, skills, projects - lives in a single cv.yaml file. A Zod schema validates it at build time, so a malformed date or a missing required field fails the build rather than reaching production. Every renderer reads from that one file:

  • The rendered HTML CV and its print stylesheet
  • The project index and the long-form case-study pages
  • The game CV, which derives its rooms, stations, and interactive records from the same entries

Adding a project means editing one file. Nothing can silently disagree with anything else.

Interactive game CV

A 16-bit game layer built with Phaser reads the same data source and turns a career history into explorable rooms - a timeline hall for roles, a library for education, a laboratory for projects. It is in development and not yet published here.

Design system

A token-based CSS layer with dark and light themes, a dedicated print stylesheet so the page produces a clean PDF, and prefers-reduced-motion handling throughout.

Engineering practice

  • CI pipeline: lint, type-check, unit tests, build and end-to-end tests, run on every change
  • Testing: Vitest over the data layer - ordering, chronology and a guard that fails the build on content that should not be published - and Playwright for smoke and accessibility runs against the built site
  • Deployment: Cloudflare Pages, built and published on every change to the main branch

Design principle

The same principle recurs here as in the manufacturing optimisation tool and the comfort feedback platform: the answer first, the depth underneath for whoever wants it. The CV reads in thirty seconds; the case studies and the print view are there for anyone who wants to go further.