Skip to main content

Documentation 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.

Digital Coven is a statically-deployed React SPA — every file you see in the repository root is the deployable artifact. There is no separate 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

digital-coven/
├── index.html              # SPA shell and entry point
├── useScreenInit.js        # Re-exported React namespace (module preload target)
├── canvas.manifest.js      # Empty manifest placeholder (canvas build tooling)
├── .nojekyll               # Disables Jekyll processing on GitHub Pages
├── README.md

├── assets/                 # Vite-compiled JS and CSS bundles
│   ├── main.js             # Full application bundle (React, Router, Framer Motion)
│   ├── main.css            # Compiled Tailwind + custom design-system CSS
│   └── proxy.js            # Shared JSX runtime / react-dom chunk

├── components/             # Compiled component modules (ESM, modulepreload targets)
│   ├── BackgroundAtmosphere.js
│   ├── CustomCursor.js
│   ├── home/
│   │   ├── CardsOfFate.js          # Houses React Router + Framer Motion exports
│   │   ├── HeroText.js
│   │   ├── ProjectMarquee.js
│   │   ├── SummoningCircle.js
│   │   └── TerminalStatus.js
│   ├── about/
│   │   ├── ThingsINotice.js
│   │   └── TimelineMilestones.js
│   ├── projects/
│   │   └── ProjectTiles.js
│   ├── skills/
│   │   ├── Cauldron.js
│   │   └── SkillConstellation.js
│   └── writing/
│       └── ArticleFormats.js

└── pages/                  # Pre-rendered static HTML pages (one per route)
    ├── Home.html
    ├── About.html
    ├── Projects.html
    ├── Skills.html
    ├── Writing.html
    ├── CaseStudies.html
    └── Contact.html

Top-level files

FilePurpose
index.htmlHTML shell that mounts <div id="root">, preloads all ESM chunks, imports assets/main.css, and runs the inline hash-routing bootstrap script
useScreenInit.jsRe-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.jsEmpty file generated by the build step; consumed by the canvas/CI tooling for manifest validation
.nojekyllZero-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, the AppShell layout, all seven route definitions, Framer Motion animations, and Framer Motion scroll utilities.
  • main.css — The compiled stylesheet. Begins with a Google Fonts @import for Cinzel Decorative and JetBrains Mono, followed by the Tailwind utility layer, then the custom :root design-system variables, and finally bespoke classes such as .glow-text-* and .crt-overlay.
  • proxy.js — A shared chunk containing react-dom, the JSX runtime (jsx, jsxs, Fragment), and the motion factory 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:
SubdirectoryComponentsRoute
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
Two components live at the root of components/ because they are shared across all routes:
  • CustomCursor.js — A bespoke pointer that replaces the native cursor (enabled by cursor: none on body). Rendered unconditionally inside AppShell.
  • BackgroundAtmosphere.js — Full-viewport ambient background layer (particle field, radial gradients). Also rendered unconditionally inside AppShell.
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

// useScreenInit.js (compiled output)
export { Z as R, D as r };
// Z = the React namespace object (all hooks, createElement, etc.)
// D = the raw react module exports
Vite’s code-splitting emits component files as independent ESM modules. Each component needs access to React hooks (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:
import { r as f } from "../useScreenInit.js";

// Inside a component:
const [value, setValue] = f.useState("All");
const ref = f.useRef(null);
f.useEffect(() => { /* … */ }, []);
This pattern ensures every component in every separate chunk references the same React instance, preserving the rules of hooks and context across the module graph.
index.html includes <link rel="modulepreload" crossorigin href="./useScreenInit.js"> so that this critical module is fetched and parsed immediately on page load, before any component that depends on it begins executing.

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.

Build docs developers (and LLMs) love