Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/v-doom/llms.txt
Use this file to discover all available pages before exploring further.
TarotCard is the signature animated card component powering both the Tonight’s Reading spread on the home page and the Spells Cast project showcase. Each card features a 3D flip/reveal effect driven by Framer Motion — the front face displays a decorative diamond sigil and the card’s type label; hovering the card or clicking it rotates it 180° on the Y axis to reveal the title, subtitle, description, ingredient tags, and optional project link on the back face. Cards entrance-animate from below (y: 50 → 0, opacity: 0 → 1) with a configurable stagger delay, so a row of cards materialises one by one like a tarot spread being laid on the table.
Props
Controls the subtitle accent colour on the back face and the intended semantic role of the card. Each value maps to a distinct text colour token applied to the subtitle:
| Value | Subtitle colour | Intended use |
|---|---|---|
"past" | Bone/white text-bone | Backstory, history, origin |
"present" | Amber text-amber | Current work, present state |
"future" | Violet text-violet | Aspirations, upcoming plans |
"project" | Amber text-amber | Project showcase cards |
The front face always uses
border-violet/40 and the back face always uses border-amber/40, regardless of type. Only the subtitle text colour on the back face changes with the type.The main heading displayed on the back face of the card. Rendered in the serif display font. Example:
"The Architect" or "Grimoire.js".A secondary category label rendered beneath the title on the back face in the card’s type-based accent colour. Example:
"Current Workings" or "Documentation Generator".The body copy shown on the back face of the card. Supports multiple sentences and scrolls within the card if long. Example:
"Weaving complex state machines and responsive interfaces...".An array of tech-stack tag strings rendered as pill badges on the back face under an Ingredients heading. Example:
["React", "AST Parsing", "Tailwind"]. Renders whenever the prop is provided — not exclusive to the "project" type.A URL rendered as a “Speak Incantation →” anchor button at the bottom of the back face. Opens in a new tab. Example:
"https://github.com/your-repo". Renders whenever the prop is provided — not exclusive to the "project" type.Framer Motion entrance animation delay in seconds. Used to stagger cards when rendering a row. Example:
0.2, 0.4, 0.6.Card Types
- past
- present
- future
- project
Subtitle colour: Bone/white (
text-bone)The "past" type is used for history and origin cards — things that have already been woven into the practitioner’s story. On the home page it represents The Foundation card, evoking legacy experience and the old ways of the web.The front face label reads “past” in
text-violet/60. The subtitle on the back face is rendered in bone/white (text-bone).Home Page Usage
The home page renders threeTarotCard components inside a flex row forming Tonight’s Reading — a classic three-card past/present/future tarot spread.
The section heading is wrapped in its own
motion.div with whileInView so it fades in as the user scrolls down, slightly before the cards themselves animate in.Projects Page Usage
The Projects page (/projects) renders all four project cards by mapping over a data array. Each card is wrapped in a motion.div that applies a spring entrance animation, then passes type="project" to TarotCard.
Adding New Cards
Follow these steps to add a fifth project card to the showcase:Add a new entry to the projects array
Append your project object to the
projects data array. Include all required fields — title, subtitle, description — plus optional ingredients and link.Verify the map renders it automatically
Because the page uses
projects.map(...), no JSX changes are needed. The new object will automatically be picked up and rendered with the correct index-based stagger delay.Check the layout wraps correctly
The grid uses
flex flex-wrap justify-center. With five cards you’ll have a row of four and a single centred card below. If you prefer a symmetrical 2+3 or 3+2 layout, switch to a CSS grid:Entrance Animation
Thedelay prop controls the stagger offset for the Framer Motion entrance animation baked into every TarotCard. Internally, the component uses:
0.2, 0.4, 0.6 — to a row of cards, each one rises into view 200 ms after the previous, mimicking the gesture of a reader placing cards one at a time.