The Projects page presents completed work as physical artefacts — parchment notes pinned to a cork board, each one rotated slightly off-axis, stamped with a wax seal, and annotated with the technologies used and a flavour-text description. The result turns a conventional project grid into a tactile collection of magical evidence.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/the-craft/llms.txt
Use this file to discover all available pages before exploring further.
The Projects Data Array
At the top ofassets/Projects.js sits the projects data array. Each entry is a plain JavaScript object with five fields:
| Field | Type | Purpose |
|---|---|---|
title | string | Project name displayed as the card heading |
ingredients | string[] | Tech stack rendered as pill badges |
incantation | string | One-sentence flavour description of the project |
link | string | URL for the “Inspect Artifact →” anchor |
rotation | number | CSS rotate value in degrees (positive or negative) |
Necromancer UI
Ingredients: React, Tailwind, Framer MotionIncantation: “A dark-mode dashboard that resurrects dead data streams into actionable insights. Built for the modern data warlock.”Rotation: -2°
Alchemist E-Commerce
Ingredients: Next.js, Stripe, PostgreSQLIncantation: “Transmuting raw traffic into pure gold. A high-conversion storefront with seamless checkout rituals.”Rotation: 3°
Scrying Glass App
Ingredients: React Native, WebRTC, Socket.ioIncantation: “Peer across the veil with real-time video communication. Low latency, high clarity, zero dark spirits attached.”Rotation: -1°
Grimoire CMS
Ingredients: Vue, Node.js, MongoDBIncantation: “A headless content management system for cataloging spells, curses, and blog posts. Highly extensible.”Rotation: 4°
Card Anatomy
Each card is built from two layers inside amotion.div:
Pin Circle
An
absolute -top-3 left-1/2 -translate-x-1/2 circle with bg-midnight-darker border-2 border-spell simulates a push-pin holding the note to the board.Wax Seal
An
absolute top-4 right-4 circle with bg-blood and a rotate-12 transform holds a Cinzel "W" character. On group hover the seal rotates back to 0° over 500ms via group-hover:rotate-0 transition-transform.Parchment Body
A
parchment-texture p-8 md:p-10 rounded-sm div forms the card surface. An absolute inset-0 border-[8px] border-midnight/5 overlay with an irregular border-radius gives the edge a hand-torn look.Framer Motion Animations
Each cardmotion.div receives three animation props:
- Scroll Entry
- Hover State
- Default Rotation
Cards use
whileInView with viewport={{ once: true, margin: "-100px" }} so they only animate once, triggering 100px before they enter the viewport. Each card’s transition has a staggered delay of index * 0.2 seconds:How to Customize
Edit the projects data array at the very top ofassets/Projects.js. Every field maps directly to a visible element on the card: