The Projects page lays out your portfolio work as a responsive two-column card grid where every entry is wrapped in aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/y2k-web/llms.txt
Use this file to discover all available pages before exploring further.
WindowFrame component — giving each project its own desktop-window chrome complete with a title bar, control buttons, and inset borders. Cards have a slight initial tilt (set via the rotation field) and spring back to straight on hover, with a glowing gradient halo behind each window for extra retro flair. On narrow viewports the grid collapses to a single column.
Project Card Data Structure
Each project is represented by a plain JavaScript object with the following shape:| Field | Type | Description |
|---|---|---|
title | string | Project name — used as the WindowFrame title bar (appended .exe) |
desc | string | One- or two-sentence summary of what the project does |
tech | string | Comma-separated technology names shown in a yellow “TECH STACK” label |
img | string | URL to a preview/screenshot image displayed at the top of the card |
rotation | number | Initial CSS rotation in degrees (e.g. -2, 3) for the tilt effect |
Single Card JSX
Each entry inprojects is mapped to a motion.div wrapper that holds a WindowFrame. A simplified version of the render logic:
WindowFrame component handles all the retro chrome (title bar, close/minimize/maximize buttons, border inset). The card body only needs to supply the content inside.
The View Source and Launch buttons are rendered as
<button> elements. In the current source they have no onClick handler — wire them up to your repository URL and live deployment URL as needed.Route Registration
The Projects component (Fp in the compiled bundle) is mounted at /projects:
Adding a New Project
Open the Projects component source and append a new object to theprojects array:
Removing a Project
Delete the corresponding object from theprojects array. The grid will reflow and close the gap left by the removed card.