Spell Index is a single-page application (SPA) developer portfolio wrapped in an immersive witchy aesthetic. Every route, component, and piece of copy leans into the theme: the navigation sidebar labels pages as The Summoning and Dark Arts, a custom teal cursor trails across the screen, floating particles drift through an ink-dark background, and candlelit animations replace conventional UI chrome. Beneath the atmosphere is a solid modern stack — React 18, React Router v6, Framer Motion, Tailwind CSS, and Vite — compiled to fully static HTML, CSS, and JS assets that ship on GitHub Pages without a server.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/spell-index/llms.txt
Use this file to discover all available pages before exploring further.
Tech stack
Spell Index is built on five core technologies:| Technology | Version | Role |
|---|---|---|
| React | 18 | Component rendering and state management |
| React Router | v6 | Client-side routing via BrowserRouter and <Routes> |
| Framer Motion | latest | Page transitions, particle animations, hover effects |
| Tailwind CSS | v3 | Utility-first styling with custom design tokens |
| Vite | latest | Dev server and production bundler |
Custom color tokens
Tailwind is configured with a bespoke palette that maps to the witchy atmosphere. The following values are extracted from the compiled CSS:Routes and pages
Spell Index defines ten routes. Each has a witchy label shown in the sidebar and a plain sub-label shown underneath it:| Witchy label | Plain label | Path | What it contains |
|---|---|---|---|
| The Summoning | Home | / | Landing hero with ConstellationText, CauldronCanvas skills preview, and introductory copy |
| Origin Story | About | /about | Personal background section rendered with MoonPhases and TarotCard elements |
| Dark Arts | Skills | /skills | Technology skill set displayed via SpellBook layout |
| Conjurings | Projects | /projects | Portfolio of projects shown as TarotCard components — click to flip and reveal detail |
| Day Job Spells | Work | /work | Professional work history rendered as a CandleTimeline |
| Post-Mortems | Case Studies | /case-studies | In-depth case studies presented inside SpellBook layout |
| Scrolls | Articles | /articles | Article index using ParchmentCard components for each entry |
| (article slug) | Article detail | /articles/:slug | Individual article page at dynamic slug route |
| Testimony | Testimonials | /testimonials | Client/colleague quotes displayed through GhostQuote |
| Send a Raven | Contact | /contact | Contact form powered by SummoningForm with animated WaxSeal |
The 16 witchy UI components
All custom components live incomponents/witchy/. Each one has a thematic name that corresponds to its function:
| Component | What it renders |
|---|---|
BackgroundParticles | Fixed full-screen layer of drifting amber and teal particles with a film-grain SVG noise overlay |
CandleTimeline | Animated wax candles whose heights represent job duration; used on the Work page |
CauldronCanvas | <canvas> animation of skill-name bubbles rising and wobbling out of a SVG cauldron |
ConstellationText | Staggered letter-by-letter reveal with glowing amber star dots and a teal dashed constellation path |
CursorTrail | Replaces the system cursor with a spring-animated teal orb and a fading trail |
Footer | Minimal footer with a parallax cauldron SVG that follows the mouse horizontally |
GhostQuote | Animated blockquote component for testimonials; fades in with a ghostly blur entrance |
MoonPhases | Scroll-driven SVG moon that morphs through phases as the user scrolls down the About page |
Navigation | Fixed left sidebar on desktop (≥1024 px) with an amber active indicator; spring slide-in drawer on mobile |
PageTransition | Wraps each route in a Framer Motion opacity/blur/y entrance and exit animation |
ParchmentCard | Aged parchment-coloured card with a wavy torn-edge top border and a WaxSeal tag; used for articles |
SpellBook | Two-page book layout with spine shadow and page-turn styling for case study and skills content |
SpellCircleCard | Circular bordered card with rotating SVG rune ring; used for individual skill items |
SummoningForm | Styled contact form with cursor:none overrides, teal focus rings, and amber validation states |
TarotCard | 3-D flip card (CSS rotateY) with a teal rune back face and an amber-bordered front face |
WaxSeal | Circular wax seal with inset highlight/shadow, available in red, teal, and amber colorways and three sizes |
Deployment
The repository contains a.nojekyll file and a pre-built index.html at the root — the compiled output is the repository itself, not a dist/ subdirectory. This means the site deploys directly to GitHub Pages as a static site without any build step on the host. There is no server-side rendering or API layer — every route is handled client-side by React Router. Any static host (Netlify, Vercel static export, Cloudflare Pages) can serve the repo contents identically.
Quickstart
Clone the repo and serve the pre-built static files locally in under two minutes.
Components Overview
Deep-dive into all 16 witchy UI components, their props, and usage examples.