All portfolio content — projects, skills, articles, case studies, and guestbook entries — lives in one place:Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dev-mode-arcade/llms.txt
Use this file to discover all available pages before exploring further.
data/mockData.js. This flat static file is the single source of truth for the entire site. No database, no CMS, no API calls — just a JavaScript module that exports five single-letter constants (p, s, a, c, g) consumed directly by the React components at build time. Editing this file is all you need to make the portfolio your own.
The file is compiled into the production bundle via Vite’s ES module tree-shaking. Only the exports actually imported by components end up in the final build, so unused data adds zero overhead.
Projects — p
The p export is an array of project objects rendered on the Projects page. Each entry maps to one arcade game cabinet card, complete with a colored glow accent.
Shape reference
Field reference
| Field | Type | Description | Example |
|---|---|---|---|
id | string | Unique key used by React as the list key prop | "proj-1" |
title | string | Project name shown as the cabinet heading | "Neon Nexus" |
genre | string | Primary tech stack, displayed as the arcade “genre” tag | "React / Three.js" |
players | string | Collaboration mode — "Solo" or "Team" | "Solo" |
year | string | Year the project was completed or published | "2025" |
description | string | One-sentence project summary | "A 3D data visualization dashboard..." |
color | string | Arcade glow accent — must be one of the four design-token colors | "purple" |
Full data
Skills — s
The s export is an object with three category keys, each holding an array of skill entries. The Skills page renders each category as a separate panel of glowing skill circles.
Shape reference
Categories
| Category | Description |
|---|---|
frontend | Browser-facing technologies — frameworks, styling, animation |
backend | Server-side runtimes, databases, and infrastructure |
tooling | Developer experience tools — version control, containers, build tools |
Field reference
| Field | Type | Description | Example |
|---|---|---|---|
name | string | Short skill name shown on the circle | "React" |
level | string | Arbitrary display string rendered as the proficiency label | "Level 99" |
desc | string | Full description shown on hover — keep it punchy | "Component architecture, hooks, context, performance tuning." |
The
level field is a free-form display string — it is never parsed as a number. The convention is "Level <integer>" to stay on-theme, but you can write anything you like (e.g. "MAX", "Legendary", "Still Learning").Example skill entry
Full data
Articles — a
The a export is an array of writing article objects displayed on the Writing page as an instruction-manual chapter list. Each entry includes a badge indicating the article’s type.
Shape reference
Field reference
| Field | Type | Description | Example |
|---|---|---|---|
id | string | Unique key used by React as the list key prop | "art-1" |
chapter | string | Chapter number shown on the left spine — display only, not enforced as sequential | "01" |
title | string | Full article title | "The State Management Dilemma" |
type | string | Badge label stamped on the entry — controls visual style class | "REFLECTION" |
date | string | Free-form publication date string | "Oct 2025" |
excerpt | string | One-sentence teaser shown under the title | "Why I stopped worrying..." |
The
type field controls the badge rendered on the Writing page entry. Built-in values are "REFLECTION", "TECHNICAL", and "BUG REPORT", but the component accepts any uppercase string — useful for custom categories like "TUTORIAL" or "DEEP DIVE".Full data
Case Studies — c
The c export is an array of case study objects shown on the Case Studies page. Each entry is framed as a boss fight: the project challenge is the boss, and the solution is the strategy used to defeat it.
Shape reference
Field reference
| Field | Type | Description | Example |
|---|---|---|---|
id | string | Unique key used as the React list key prop | "cs-1" |
title | string | Project name rendered as the case study heading | "Project: Overhaul" |
boss | string | Name of the antagonist / core challenge | "The Legacy Monolith" |
problem | string | Narrative description of the problem being solved | "A 5-year-old jQuery application..." |
strategy | string | High-level approach or architecture pattern used | "Strangler fig pattern..." |
combos | string[] | Array of specific tools, migrations, or techniques deployed | ["Webpack to Vite migration", ...] |
victory | string | Concrete, measurable results of the solution | "Load time reduced to 1.2s..." |
bonus | string | A stretch goal, next step, or bonus insight | "Next step: migrating to GraphQL." |
Full data
Guestbook — g
The g export is an array of pre-populated leaderboard entries shown in the sidebar of the Contact page. These seed entries give the guestbook personality before any real visitors have signed it.
Shape reference
Field reference
| Field | Type | Description | Example |
|---|---|---|---|
initials | string | 1–3 character handle shown on the score board | "AAA" |
score | number | Numeric score — displayed left-padded to 6 digits | 999999 |
message | string | The visitor’s message or quip | "HIRED." |
Full data
Complete file structure
For reference, here is the full module structure showing all five single-letter exports:The source file uses minified single-letter identifiers (
p, s, a, c, g) as both the internal variable names and the exported names. Import them using those exact letters: import { p, s, a, c, g } from '../data/mockData.js'.Ready to replace the placeholder data with your own? Head to the Customization guide for a step-by-step walkthrough of every field.