All of the portfolio’s text, numbers, and metadata live in plain JavaScript data arrays inside the source JSX files. Nothing is pulled from a CMS or an external API — every label, stat, and blurb is a value you can open in your editor, change in seconds, and see reflected instantly in the dev server. This page walks you through every editable section in the order you’re most likely to tackle them.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dev-mode/llms.txt
Use this file to discover all available pages before exploring further.
Updating your bio (About page)
The About page renders a pixel-art character sheet. Four pieces of hardcoded text control the identity section at the top, and a separate card holds the longer narrative paragraph.Change your name and class
Find the string
"DEV_NAME" in the About component and replace it with your own name. Directly below it, change "FULL STACK MAGE" to whatever creative title fits you — it appears as your character class under the portrait.Update the StatBar values
The four stat bars are hardcoded integers on a 0–10 scale. Locate the StatBar block and adjust each value to match your own personality metrics.The
value prop accepts any integer from 0 to 10. The bar fills proportionally and the pixel segments are rendered automatically.Edit the bio paragraph
The narrative copy lives inside the instruction-manual card beneath the stat block. Look for the JSX string that begins with
"A long time ago in a retail job far, far away..." and replace it with your own career story. Keep it short — the card has a fixed height and will scroll on overflow.Change the warning quote
At the bottom of the About panel there is a flavour-text warning. Replace the default string with your own quirky confession:
Swap the pixel-art avatar
The avatar is generated on-the-fly by DiceBear. The only thing you need to change is the The
seed query parameter — every unique string produces a different character sprite.backgroundColor parameter is set to the site’s deep-purple background colour (1a0a2e). You can change it to any hex value, but keeping it consistent with the rest of the page looks best.Updating skills (Skills page)
Skills are stored in a single array of category objects. Each category renders as one panel on the Skills page, and each skill inside it renders as a row with a fighting-game combo notation and a pixel level bar.Field reference
The heading displayed at the top of the category panel, e.g.
"LANGUAGES". All-caps is the house style.The neon accent colour applied to the panel border and skill-bar fill. Must be one of the three supported theme values.
The technology or skill name shown on the left side of each row.
The fighting-game input notation displayed on the right. Any Unicode string works — use arrow characters (
↓↘→) and letters (P, K) to stay on theme, or write whatever you like.Proficiency on a scale of
0 to 10. The pixel-segment bar fills proportionally; 10 is fully lit.Adding a new skill category
Append a new object to theskillCategories array. Each new category object renders an additional panel automatically.
Adding or removing individual skills
To add a skill, push a new object into the relevant category’sskills array. To remove one, delete its object from the array. The layout reflows automatically.
Updating writing articles (Writing page)
The Writing page renders each article as a tilted paper card — like physical zines and flyers pinned to a corkboard. The data lives in a flat array of article objects.Field reference
Unique integer identifier. Increment from the last entry when adding a new article.
The headline printed on the card. All-caps matches the retro print aesthetic.
A display-only date string — it is not parsed, so any format works. The existing entries use
"MMM YYYY" with a retro-future year.The publication type badge shown on the card. The three built-in values are
"ZINE", "MANUAL", and "FLYER". You can use any custom string — it will render as-is in the badge.The tilt angle of the card in degrees. Negative values lean left; positive values lean right. Keep values between
-5 and 5 — larger values break the corkboard illusion and can cause cards to overlap awkwardly.A Tailwind background utility class applied to the card surface. Use any
bg-{color}-{shade} class from Tailwind’s palette, e.g. "bg-yellow-100", "bg-indigo-100". Light shades (50–200) work best against the dark page background.A one- or two-sentence teaser displayed beneath the title. Keep it punchy.
The
date field is purely decorative — dev-mode does not sort or filter by date. Arrange articles in the array in the order you want them to appear on the page.Updating case studies (Case Studies page)
Each case study is framed as a boss fight. The data drives a phase-by-phase breakdown of a real project challenge, complete with a boss name, difficulty level, emoji sprite, and XP rewards.Field reference
Unique integer identifier. Increment from the last entry.
The project challenge displayed as the boss name.
SCREAMING_SNAKE_CASE with a file extension like .EXE or .JS reinforces the retro-game aesthetic.The boss difficulty level shown in the HP header. Any positive integer works — use it to express how gnarly the challenge actually was.
A single emoji rendered as the boss sprite. Pick one that matches the vibe of the problem:
👾, 🐉, 🕷️, 💀, and so on.An ordered array of phase objects, each with a
title string and a content string. The phases are rendered top-to-bottom inside the boss card. The four-phase structure — Problem → Challenges → Process → Result — is the recommended convention but is not enforced by the component.An array of skill or technology tags awarded at the end of the case study, styled as XP items. List anything you genuinely learned or used during the project.
Adding a third case study
Copy an existing entry, give it a newid, and fill in your own content. The page layout accommodates any number of cases.
The boss HP bar that animates on page load is a CSS keyframe animation — it is purely decorative and not connected to any field in the data array. Changing
level updates the number displayed in the header but does not affect how the HP bar drains.