The home page is a two-act performance. For the first 2.5 seconds the screen displays nothing but theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/systems-witch/llms.txt
Use this file to discover all available pages before exploring further.
WITCH ASCII art and a blinking boot message — every visitor’s first impression is a cold terminal startup. When the timer clears, a Framer Motion fade-out removes the boot screen and the hero fades in: a perpetually rotating sigil, the site wordmark, the tagline, and a live-status line. The transition is handled entirely in React state with no routing — both phases live inside the same component.
Boot sequence phase
When the component mounts,useState(true) sets isBooting to true and a useEffect fires a setTimeout of 2500 ms. The cleanup function (clearTimeout) prevents a state update on an unmounted component if the user navigates away during the boot window.
isBooting is true, the component renders the ASCII constant wrapped in a motion.div with initial={{ opacity: 0 }} and animate={{ opacity: 1 }}. Framer Motion’s AnimatePresence (mode "wait") handles the cross-fade between the two phases.
The ASCII art constant
The WITCH logotype is defined as a template-string constant namedasciiArt at the top of main.js:
[ SYSTEM BOOTING... ] line is a separate motion.div child that fades in after a 1-second delay (transition: { delay: 1 }), appearing as though the terminal is printing in real time.
Both elements share the classes font-mono text-acid text-xs sm:text-sm whitespace-pre text-glow, rendering the boot screen in acid green with the text-glow CSS effect (text-shadow: 0 0 8px rgba(164,255,61,.6)).
Hero section
OnceisBooting flips to false, the hero motion.div animates in from { opacity: 0, y: 20 } to { opacity: 1, y: 0 } over 0.8 seconds.
Rotating sigil
TheHeroSigil SVG component is wrapped in its own motion.div with an infinite rotation animation:
w-2 h-2 bg-acid rounded-full animate-pulse-glow) sits at the absolute center of the sigil container, pulsing independently. The animate-pulse-glow keyframe is defined in main.css:
Wordmark and tagline
The<h1> mixes two font families in one element: the word SYSTEMS uses font-mono (JetBrains Mono) in bone, while Witch is a <span> with font-serif italic font-normal (Cinzel italic) in acid green. Together they produce the key visual contrast of the brand.
font-sans text-lg md:text-xl text-lilac:
Bridging engineering rigor with creative intuition. Architecting digital grimoires and scalable realities.
Status line
A three-part inline readout is rendered beneath the tagline:// comment marker is deliberately rendered in near-invisible text-graphite (#0E0E10 on a black background), making STATUS: and ACCEPTING_CONTRACTS appear to float without a prefix — visible only on very careful inspection.
Customization
Change the tagline: Locate the<p> with class font-sans text-lg md:text-xl text-lilac inside the hero block and replace its text content.
Change the availability status: Find ACCEPTING_CONTRACTS in the status line and replace it with any string — for example ON_SABBATICAL, OPEN_TO_COLLABORATIONS, or EMPLOYED.
Change the boot delay: The 2500 millisecond value in setTimeout(() => setIsBooting(false), 2500) can be shortened (e.g. 1000) for a snappier experience or removed entirely by initializing isBooting to false.
Replace the ASCII art: Edit the asciiArt template string constant. Use any ASCII art generator and paste the result in — just make sure it is wrapped in backticks and the whitespace-pre class is present on the container so newlines render correctly.
Change the sigil rotation speed: Adjust the duration: 40 value on the animate={{ rotate: 360 }} transition. Lower numbers spin faster; Infinity duration would stop it entirely.
The
HeroSigil component is imported from ../components/sigils/HeroSigil.js. To swap the sigil SVG, replace that component’s SVG paths — the wrapping motion.div rotation and centering will apply automatically to whatever shape you use.