The Projects page (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dark-retro-webpage/llms.txt
Use this file to discover all available pages before exploring further.
/projects) showcases the developer’s work as a filterable grid of .bevel-window cards. Each card presents a project title, description, technology stack tags, and links to the GitHub repository and live demo. A tag-based filter bar at the top of the page lets visitors narrow results to a specific technology or category.
Layout structure
The page uses a full-width container capped atmax-w-6xl with a vertical spacing rhythm (space-y-8). From top to bottom:
- Page heading — a
font-display(Press Start 2P) section title, e.g."PROJECTS_DIR/", styled intext-[#a855f7]. - Filter bar — a wrapping row of tag buttons. The active filter is highlighted; clicking a tag filters the card grid to show only matching projects.
- Project card grid — a responsive grid (
lg:grid-cols-2, collapsing to single column on small screens) of project cards.
Project card anatomy
Each project card is a.bevel-window panel with the following internal structure:
mt-auto on the tags row pushes the tag strip to the bottom of the card regardless of description length, keeping the grid visually aligned.
Tag filter bar
The filter bar renders a list of all unique tags collected from the projects data array. Clicking a tag sets the active filter in component state; the grid then shows only projects whosetags array includes the active filter. Clicking the active tag again (or an “ALL” button) resets the filter.
The filter is client-side only. There is no pagination — all projects in the data array are rendered into the DOM and simply hidden/shown by the filter logic.
Adding a project
Projects are defined as objects in an array inside the Projects component inassets/main.js. To add a new project, append an object to the array:
| Field | Type | Required | Notes |
|---|---|---|---|
title | string | ✅ | Displayed as the card heading in font-mono |
description | string | ✅ | Short project summary (1–3 sentences) |
tags | string[] | ✅ | Technology/category tags; drives the filter bar |
github | string | ✅ | Full GitHub URL; leave "" to hide the icon |
live | string | ✅ | Live demo URL; leave "" to hide the icon |
CSS utilities used
| Class | Purpose |
|---|---|
.bevel-window | Raised Win98-style card border + --bg-panel background |
.bevel-button | Tag filter button and icon link styling |
bg-[#a855f7]/10 | Purple tint background for tag pills |
border-[#a855f7] | Purple border for active/React tags |
border-[#22d3ee] | Cyan border for TypeScript/tool tags |
text-[#94a3b8] | Muted description text |
Customization
Reorder projects: The grid renders projects in array order. Move objects within theprojects array to change display order.
Change grid columns: The grid uses lg:grid-cols-2. Change this to lg:grid-cols-3 for a denser three-column layout on large screens.
Remove the filter bar: Delete the filter bar JSX and the activeFilter state from the Projects component. Remove the .filter() call on the projects array passed to the card map.
Add a “featured” badge: Add a featured: true field to a project object and render a small badge (e.g., a text-[#a3ff12] label styled with .bevel-button) in the card header when project.featured is truthy.
Related pages
Case Studies
Deep-dive narratives for selected projects
Skills
Technology categories with animated progress bars
Home
Hero layout with navigation to all sections
Contact
Get in touch or sign the guestbook