Digital Coven is a statically-deployed React SPA — every file you see in the repository root is the deployable artifact. There is no separateDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/digital-coven/llms.txt
Use this file to discover all available pages before exploring further.
src/ tree. Vite has already compiled and bundled the source, landing all JavaScript, CSS, and pre-rendered HTML pages alongside the original index.html entry point.
Repository root
Top-level files
| File | Purpose |
|---|---|
index.html | HTML shell that mounts <div id="root">, preloads all ESM chunks, imports assets/main.css, and runs the inline hash-routing bootstrap script |
useScreenInit.js | Re-exports the React namespace so components loaded as separate ESM modules can call useScreenInit.useState, useScreenInit.useEffect, etc. without bundling their own React copy |
canvas.manifest.js | Empty file generated by the build step; consumed by the canvas/CI tooling for manifest validation |
.nojekyll | Zero-byte file that tells GitHub Pages to skip Jekyll processing, ensuring _-prefixed paths and JS module imports are served without transformation |
The assets/ directory
assets/ contains the three chunks produced by Vite:
main.js— The primary application bundle. Contains the full React tree: all page components, theAppShelllayout, all seven route definitions, Framer Motion animations, and Framer Motion scroll utilities.main.css— The compiled stylesheet. Begins with a Google Fonts@importfor Cinzel Decorative and JetBrains Mono, followed by the Tailwind utility layer, then the custom:rootdesign-system variables, and finally bespoke classes such as.glow-text-*and.crt-overlay.proxy.js— A shared chunk containingreact-dom, the JSX runtime (jsx,jsxs,Fragment), and themotionfactory from Framer Motion. Split out so the separately-preloaded component modules can reference it without duplicating the runtime.
The components/ subdirectory
Each sub-folder maps one-to-one to a page route:
| Subdirectory | Components | Route |
|---|---|---|
components/home/ | CardsOfFate, HeroText, ProjectMarquee, SummoningCircle, TerminalStatus | / |
components/about/ | TimelineMilestones, ThingsINotice | /about |
components/projects/ | ProjectTiles | /projects |
components/skills/ | SkillConstellation, Cauldron | /skills |
components/writing/ | ArticleFormats | /writing |
components/ because they are shared across all routes:
CustomCursor.js— A bespoke pointer that replaces the native cursor (enabled bycursor: noneonbody). Rendered unconditionally insideAppShell.BackgroundAtmosphere.js— Full-viewport ambient background layer (particle field, radial gradients). Also rendered unconditionally insideAppShell.
components/home/CardsOfFate.js doubles as the module that exports React Router v6 primitives (HashRouter, Routes, Route, Link) and Framer Motion’s AnimatePresence. Because index.html uses <link rel="modulepreload"> for every component, the browser fetches this chunk — and its transitive React Router dependency — before the main bundle even executes.The pages/ directory
pages/ holds one fully-rendered HTML file per route. These are produced by the static-site pre-rendering pass and allow crawlers and preview tools to receive meaningful HTML without executing JavaScript. At runtime the SPA ignores these files; the React Router in main.js handles all navigation.
useScreenInit.js — what it is and why it exists
useState, useEffect, useRef, …) but cannot simply import React from 'react' because that would duplicate the React singleton across chunks — breaking hook state.
useScreenInit.js is the single authoritative re-export of the React namespace. Components import it and then dereference hooks from the object:
Vite build output (dist/)
The repository you see is the build output — there is no separate dist/ folder. The project is configured for base: "./" and deployed directly from the repository root (e.g., GitHub Pages at the repo’s root). A traditional Vite project would emit files into dist/ during development; here the compiled files have been committed to the repo root so the static host can serve them without a CI build step.