All portfolio content in Full Stack Sorcery lives in plain JavaScript data arrays defined directly inside the React components before compilation. There is no CMS, no database, and no external API — if you can edit a JS array, you can update every section of the site. The compiled output lives atDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/full-stack-sorcerer/llms.txt
Use this file to discover all available pages before exploring further.
assets/main.js, but edits must be made to the source components before running vite build.
Find the right data array
Each section of the portfolio (Projects, Skills, Work, etc.) has its own array constant. Locate the array for the section you want to update in the corresponding source component.
Add your new entry following the shape
Copy an existing entry as a template. Every array enforces a specific object shape — missing or misnamed keys will silently drop data or cause rendering errors.
Rebuild with Vite
From the project root, run
vite build. Vite bundles all source components into assets/main.js and assets/main.css.Adding a Project
Projects appear on the Skeletons in the Closet page (/projects) as hanging Polaroid cards inside a creaking closet. Clicking a card opens a detail modal with the full description, tech stack, and links.
| Field | Type | Notes |
|---|---|---|
id | number | Unique integer — increment from the last entry |
title | string | Displayed on the Polaroid and in the modal heading |
desc | string | Shown in the modal body |
tech | string[] | Rendered as teal badge pills in the modal |
image | string | URL for the Polaroid thumbnail and modal image |
link | string | ”Live Haunt” button target |
github | string | ”The Bones” button target |
Adding a Skill
Skills appear on the Tricks of the Trade page (/skills). Clicking the magic hat launches all skill bubbles out of it; each bubble floats and can be dragged. Bubble size is proportional to level.
| Category | Glow Color |
|---|---|
"frontend" | Turquoise (#3fd6c0) |
"backend" | Blue (#60a5fa) |
"design" | Orange (#f59e0b) |
Adding a Work Entry
Work history appears on the Haunts page (/work) as interactive SVG gravestones. Hovering a gravestone reveals a speech-bubble tooltip with the role details.
| Field | Type | Notes |
|---|---|---|
id | number | Unique integer |
company | string | Rendered on the gravestone body |
role | string | Shown in the hover tooltip heading |
dates | string | Shown beneath the company name on the stone |
epitaph | string | Short italic quote shown on the gravestone |
details | string | Full paragraph shown in the hover tooltip |
Adding a Case Study
Case studies appear on the Crypt Notes page (/case-studies) as weathered parchment cards. Clicking a card flips it open into a full-page reading modal with a drop-cap first letter.
| Field | Type | Notes |
|---|---|---|
id | number | Unique integer |
title | string | Card heading and modal title |
excerpt | string | Short summary shown on the card |
content | string | Full body text rendered in the modal; the first character is automatically styled as a decorative drop-cap |
Adding a Blog Post
Blog posts appear on the Things That Go Bump in the Blog page (/blog) as books standing on a shelf. Each book spine shows the title vertically and a row of ghost icons representing spookiness. Clicking a book opens a reading modal.
| Field | Type | Notes |
|---|---|---|
id | number | Unique integer |
title | string | Displayed vertically on the book spine and in the modal heading |
spookiness | number | Integer 1–5; controls how many ghost icons are filled on the spine |
color | string | Tailwind bg-* class applied to the book spine element |
content | string | Full post body text shown in the reading modal |
color values (keep to dark tones so the cream spine text stays legible):
Adding a Testimonial
Testimonials appear on the They Survived page (/testimonials) as a Polaroid-style carousel. Each entry auto-advances every 6 seconds with a “BOO!” flash between transitions.
| Field | Type | Notes |
|---|---|---|
id | number | Unique integer |
name | string | Displayed as the Polaroid’s display-font byline |
role | string | Shown in small-caps beneath the name |
text | string | The testimonial quote body |
image | string | Avatar URL — rendered as a sepia-tinted circle, 150×150 recommended |
The sample data uses Unsplash CDN URLs (
images.unsplash.com?w=150&q=80) as placeholder avatars. For a production portfolio, replace these with your own hosted images to avoid dependency on a third-party CDN and ensure the correct people are pictured.Nav Items Reference
The navigation array drives both the home page portal grid and the slide-out sidebar menu. Each entry maps a route to its spooky label, sublabel, description, icon component, and accent color.accent field controls which color variant (turquoise, aqua, or orange) is applied to the nav card’s border, background tint, and icon on hover.