Magical Portfolio is designed to be a template you fully inhabit — not just a theme you drop your name into. Every element, from the SVG stroke-animation that writes your name on the home portal to the tagline beneath it, is intentionally customizable. This guide walks through each layer of identity you can change to make the portfolio genuinely yours.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/magical/llms.txt
Use this file to discover all available pages before exploring further.
1. Personal Identity
Your name, tagline, initials, and home-page quote are all hardcoded as string literals inassets/main.js. Use your editor’s find-and-replace to swap them out.
Name (SVG Text Animation)
The hero name on the home page is drawn as an SVG stroke-dash animation — the characters appear to be written by an invisible quill. Locate the string"Elara Nightshade" in assets/main.js and replace it with your own name:
viewBox="0 0 600 120" on the surrounding <svg> element accommodates names up to roughly 18–20 characters at the default font size. For significantly longer names, also adjust the viewBox width (e.g., "0 0 800 120") to prevent clipping.
Tagline
Directly beneath the animated name, a monospace tagline is displayed. Find and replace"Software Alchemist & Digital Weaver":
Navigation Logo Initials
The top-left logo in the navigation bar shows"E.G." (styled initials). Find this string in components/Navigation.js and replace it with your own initials:
Home Page Quote
Below the tagline, a small italic quote is displayed intext-slate-400. The default text is:
assets/main.js and replace it with your own quip or motto.
2. Color Palette
The entire visual identity is built on a custom Tailwind color scale calledmystic. In a source-based project, these tokens are defined in tailwind.config.js:
Example Alternate Theme: Ocean
To shift the palette toward an ocean feel (navy / cyan / white), replace the hex values:npm run build to recompile the CSS. In the pre-built assets/main.css, you would need to find-and-replace the hex color values directly throughout the stylesheet.
3. Fonts
The three typefaces are loaded via a single Google Fonts@import at the very top of assets/main.css:
| Family | Tailwind class | CSS usage |
|---|---|---|
| Cormorant Garamond | font-serif | Page titles, card headings, nav logo |
| Inter | font-sans | Body copy, descriptions, labels |
| JetBrains Mono | font-mono | Category badges, subtitles, code blocks |
Swapping Fonts
- Visit fonts.google.com and select your preferred families.
- Copy the new
@importURL from the “Use on the web” panel. - Replace the existing
@importline at the top ofassets/main.css. - Update the font-family fallbacks in your Tailwind config (in the source project):
4. Navigation Labels
The top navigation bar items are defined in thenavItems (compiled as Zp) array in components/Navigation.js:
label string for any route to rename how it appears in the nav bar. The path values must stay in sync with the React Router <Route path="..."> declarations in assets/main.js. The icon field references an imported Lucide React component — swap it for any Lucide icon you prefer.
5. Home Page Navigation Cards
The six tarot-card-style tiles on the home page are driven by thecards array in assets/main.js. Each card has a title (large serif text), subtitle (small caps label), a path (route to navigate to), and a roman numeral:
title and subtitle on any card to fit your personal vocabulary. The roman numeral and path values should remain unchanged unless you are also adding or removing routes.
6. About / Biography Text
The About page (/#/about) is built from three inline JSX section components defined in assets/main.js. Each section contains hardcoded prose that you should replace with your own story:
- Volume I: The Healing Arts — The origin section. Currently describes a journey from nursing school. Replace the two
<p>body paragraphs and the<h2>heading with your own origin story. The italic blockquote on the right side is also editable. - The Alchemical Pivot — A list of “ingredients” that catalysed a career change. Replace each
{ item, desc }object in the data array with your own turning-point moments. - Current Phases & Afflictions — Three cards describing current focus areas (“The Builder”, “The Detail Obsessed”, “The Debugger”). Replace the
<h3>labels and<p>descriptions in each card with your own current roles or obsessions.
assets/main.js and edit them directly.
7. Social Links & Contact
The contact form is located on the Summoning page (/#/contact) in assets/main.js. The form fields are “True Name” (name), “Scrying Address” (email), and “The Inscription” (message).
To wire the form to a real backend, locate the handleSubmit function (the onSubmit handler on the <form> element) and replace the simulated timeout with a real fetch or axios call to your API endpoint or a form service such as Formspree or Resend:
The contact form currently has no backend. By default it simulates a 2-second submission delay and then transitions to the success state (“Message Sent into the Aether”) without sending any data anywhere. This is intentional for the template — you must connect it to a real form-handling service (Formspree, EmailJS, Resend, a custom API route, etc.) before deploying to production.