The Projects page turns a portfolio grid into a functional-feeling desktop environment. Each project is represented as a file icon on a simulated Windows-style desktop, complete with a menu bar showing a fake directory path. Clicking an icon triggers an animated modal RetroWindow — the project’s detail sheet — so visitors can browse work the same way they’d open files on an old PC.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/neon-retro-sys-admin/llms.txt
Use this file to discover all available pages before exploring further.
Route
Desktop Explorer UI
The page root is ah-full flex flex-col container. The top of the page renders a Windows-style menu bar:
Icon Component
Each project renders as amotion.div with hover/tap scale animations:
icon field does not match a key in this map, the Folder icon is used as a fallback.
Project Detail Modal
Clicking any icon setsselectedId in local state. An AnimatePresence-wrapped overlay renders when selectedId is set:
bg-black/60 backdrop-blur-sm. The modal animates in by scaling from 0.9 → 1 and exits in reverse.
Modal Content Structure
Inside the RetroWindow, the detail view renders the following sections in sequence:- Header row — Project
name(left) anddate(right,font-mono text-xs text-gray-500). - Category tags — Mapped from
project.categories, each tag is a small bordered pill:px-2 py-1 text-xs font-mono border border-y2k-{color} text-y2k-{color}. - Description —
font-sans text-gray-300 leading-relaxedparagraph. - Disclaimer sticky note — A yellow
bg-[#ffff88]block withtransform rotate-1andshadow-retro-gray, aligned to the right at 75% width. Prefixed with boldNOTE:. - Action buttons —
RUN_DEMO(white background) andVIEW_SOURCE(white border) link elements withExternalLinkandGithubLucide icons respectively.
Project Data Reference
All four projects are defined indata/mockData.js and exported as the projects array.
| Name | Filename | Icon | Color | Categories |
|---|---|---|---|---|
| VITAL_SIGNS.exe | vital_signs.exe | heart-pulse | magenta | React, WebSockets, Healthcare |
| Retail_Hell_Escape.zip | retail_escape.zip | shopping-cart | cyan | Next.js, Stripe, E-commerce |
| CSS_Crimes.html | css_crimes.html | file-code | lime | CSS, Design, Chaos |
| Shift_Scheduler.sh | scheduler.sh | calendar | purple | Node.js, PostgreSQL, CLI |
- VITAL_SIGNS.exe — A real-time patient monitoring dashboard mockup. Built this to prove to myself that my nursing background wasn’t a waste of time in tech. It streams fake vitals via WebSockets and alerts on anomalies.
- Retail_Hell_Escape.zip — An anti-capitalist e-commerce store where the prices go up the longer you leave items in your cart. A satirical take on artificial scarcity and my years in retail merchandising.
- CSS_Crimes.html — A collection of UI components that technically work but are morally wrong. Includes a volume slider that is a randomized bingo cage and a submit button that runs away from your cursor.
- Shift_Scheduler.sh — A CLI tool for generating fair shift schedules for hospital wards. Uses a custom algorithm to balance night shifts and weekends. Because Excel spreadsheets are the enemy.
Data Structure
Each project object indata/mockData.js follows this shape:
Supported Icon Names
The icon lookup map supports five keys. Use exactly these strings in theicon field:
icon value | Lucide Component | Suggested use |
|---|---|---|
heart-pulse | HeartPulse | Healthcare / medical |
shopping-cart | ShoppingCart | E-commerce / retail |
file-code | FileCode | Frontend / CSS experiments |
calendar | Calendar | Scheduling / time-based tools |
folder | Folder | Generic / fallback |
Adding a New Project
- Open
data/mockData.js. - Append a new object to the
projectsarray following the shape above. - Pick an
iconvalue from the supported list (or add a new entry to theiconComponentsmap in the Projects component if you need a different Lucide icon). - Set
colorto one of:magenta,cyan,lime, orpurple. - Point
links.demoandlinks.sourceat real URLs, or keep them as'#'while the project is in progress.