Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/apursley2012/digital-domain/llms.txt

Use this file to discover all available pages before exploring further.

Digital Domain is a pre-built React SPA whose compiled output is committed directly to the repository root, making it deployable to any static host without an additional build step. The directory layout separates the Vite-generated bundle (assets/), the hand-authored ES-module UI components (components/), and shallow HTML stubs for each page (pages/) that allow GitHub Pages to serve direct URL paths without a redirect server.

Directory Tree

digital-domain/
├── index.html              # HTML entry point — mounts <div id="root"> and loads assets
├── .nojekyll               # Disables Jekyll on GitHub Pages so asset paths resolve correctly
├── README.md               # Project readme
├── assets/
│   ├── main.js             # Bundled React SPA — all page and route code
│   ├── proxy.js            # React, ReactDOM, and Framer Motion bundle (shared chunk)
│   └── main.css            # Compiled CSS with Win98 design tokens
├── components/
│   ├── Layout.js           # App shell: sticky header, nav bar, scanlines overlay, Outlet
│   ├── Window.js           # Draggable Win98 window chrome + Lucide icon buttons
│   ├── Marquee.js          # Scrolling text banner (infinite Framer Motion loop)
│   ├── BeveledButton.js    # Win98 beveled button with active-state press animation
│   └── HitCounter.js       # Animated retro hit counter with digit-flip transitions
└── pages/
    ├── About.html
    ├── Blog.html
    ├── BlogPost.html
    ├── CaseStudies.html
    ├── CaseStudyDetail.html
    ├── Contact.html
    ├── Projects.html
    ├── Skills.html
    ├── Testimonials.html
    └── Work.html

Top-Level Files and Directories

index.html — The HTML entry point. It contains a single <div id="root"> that React mounts into, loads assets/main.js as a standard ES module, preloads assets/proxy.js and every components/*.js file via <link rel="modulepreload">, and imports the compiled stylesheet. All React Router routes are served from this single file in production. .nojekyll — An empty file that tells GitHub Pages to bypass its built-in Jekyll static site generator. Without it, Jekyll would interfere with the assets/ path resolution, breaking the deployed site. README.md — The project readme. assets/ — Contains the three compiled files that form the full SPA: the main bundle (main.js), the shared React and Framer Motion chunk (proxy.js), and the compiled stylesheet (main.css). These files are committed to the repository so the site can be deployed without a separate build step. components/ — A collection of pre-authored ES-module files, each exporting one or more React components. Because these files are listed as modulepreload targets in index.html, the browser fetches them in parallel with the main bundle, eliminating waterfall latency on first load. pages/ — A folder of minimal HTML stubs, one per route. Each stub loads the same assets/ files as index.html and runs a small inline script that sets window.location.hash to the correct route path so React Router renders the right page when the stub URL is loaded directly (for example, from a bookmark).

Component Reference

components/Layout.js

The app shell component. It renders the sticky Win98-style header containing the navigation bar, the div.scanlines CRT overlay, and the React Router <Outlet> where page content is injected. The navigation links are driven by the sd array:
const sd = [
  { path: "/", label: "Home" },
  { path: "/about", label: "About Me" },
  { path: "/projects", label: "Projects" },
  { path: "/skills", label: "Skills" },
  { path: "/work", label: "Work" },
  { path: "/case-studies", label: "Case Studies" },
  { path: "/blog", label: "Blog" },
  { path: "/testimonials", label: "Guestbook" },
  { path: "/contact", label: "Contact" },
];

components/Window.js

Exports the Window component (W). Wraps any children in a draggable Win98 window frame with a title bar and three Lucide-icon control buttons (minimize, maximize, close). Key props:
PropTypeDefaultDescription
titlestringText displayed in the Win98 title bar
childrenReactNodeContent rendered inside the window body
defaultPosition{ x, y }{ x: 0, y: 0 }Initial position of the draggable window
defaultSize{ width, height }{ width: 400, height: "auto" }Initial dimensions
onClose() => voidCallback fired when the close button is clicked
iconReactNodeOptional icon rendered before the title text
zIndexnumber10CSS z-index applied to the window container
onFocus() => voidCallback fired when the window receives a mousedown event
classNamestring""Additional CSS classes applied to the window container

components/Marquee.js

Exports the Marquee component (M). Scrolls a text string horizontally across its container on an infinite Framer Motion loop.
PropTypeDefaultDescription
textstringThe text content to scroll
speednumber20Animation duration in seconds for one full scroll pass
classNamestring""Additional CSS classes applied to the outer container

components/BeveledButton.js

Exports the BeveledButton component (B). A Win98-style button that applies an inset box-shadow on press.
PropTypeDefaultDescription
activebooleanWhen true, applies the pressed (inset) shadow immediately
childrenReactNodeButton label content
classNamestring""Additional CSS classes
...restAll other props are forwarded to the underlying motion.button element

components/HitCounter.js

Exports the HitCounter component alongside the React Router, routing context, and hash-history utilities that power the SPA’s client-side navigation. The HitCounter itself renders an animated digit-flip display styled as a classic 2000s webpage visit counter.

How the Pre-Built Output Works

The assets/ directory contains the compiled output of a Vite build. The original JSX source files are not committed to this repository — only the bundled result is present. The relationship between the committed files is:
assets/main.js   ← All page components, route configuration, and Layout
assets/proxy.js  ← React 18, ReactDOM, Framer Motion (shared vendor chunk)
assets/main.css  ← Compiled styles: Win98 tokens, scanline & CRT keyframes
components/*.js  ← Hand-authored ES modules imported by assets/main.js at runtime
pages/*.html     ← Thin stubs that redirect hash routes for direct-URL access
index.html       ← Root HTML shell that bootstraps the entire SPA
The components/*.js files are not produced by the build — they are hand-authored ES modules. assets/main.js imports from them at runtime using relative paths (e.g., ../components/Layout.js).
The pages/*.html stubs are not part of the React Router route tree. React Router uses hash-based client-side routing: all navigation happens entirely in the browser by changing window.location.hash. The stubs exist solely so that a user who bookmarks or directly visits a URL like pages/About.html on GitHub Pages will still land on the correct page — the inline script in each stub sets window.location.hash to the matching route (e.g., /about) before React boots, and React Router then renders the right component.
Never edit assets/main.js or assets/main.css by hand. Both files are minified compiled output and are not intended for direct modification. If you need to change page content or routing beyond what the committed files expose, you will need access to the original Vite source project that produced these bundles.

Build docs developers (and LLMs) love