dev-mode is a static React SPA built and bundled by Vite. Because it targets static file hosting (no server-side rendering), every artefact the browser needs is either pre-compiled into theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dev-mode/llms.txt
Use this file to discover all available pages before exploring further.
assets/ directory or shipped as a small hand-authored module in components/. The pages/ directory holds one HTML shell per route so direct-URL navigation works without a server rewrite rule.
index.html
The root entry point. It mounts the React app into <div id="root"> and wires up every module the browser will need via <script type="module"> and <link rel="modulepreload">. It also contains the hash-redirect bootstrap script that ensures /#/ is set when a visitor lands directly on the root URL (see Routing for details).
useScreenInit.js
A thin re-export shim that surfaces React and ReactDOM under stable named exports (r → React default, R → ReactDOM namespace). All other modules — ArcadeButton.js, ScanlineOverlay.js, and assets/main.js — import React from this single location, so the runtime is only evaluated once regardless of how many entry chunks the browser loads.
assets/main.js
The primary compiled bundle produced by Vite. It contains the complete application tree:
- React Router (
HashRouter,Routes,Route) - Framer Motion (
AnimatePresence,motion.*) - All seven page components (
Home,About,Projects,Skills,Writing,CaseStudies,Contact) - The
AppShelllayout (bottom nav bar +ScanlineOverlay) - Shared components
ArcadeButtonandStatBar - All Tailwind-driven animation logic
main.js is a minified production build. The readable source equivalents live
across the components/ directory and were compiled from the project’s Vite
source before deployment.assets/main.css
The compiled Tailwind stylesheet. It includes the full utility layer plus every custom arcade-themed extension defined in the Tailwind config:
| Token | Value |
|---|---|
arcade-bg | #0a0610 |
arcade-cyan | #00f0ff |
arcade-lime | #9eff00 |
arcade-magenta | #ff2bd6 |
arcade-purple | #1a0a2e |
arcade-white | #f0e9ff |
animate-flicker, animate-blink, animate-scanline, animate-marquee, font-pixel, text-shadow-crt, and neon box-shadow helpers are all defined here.
assets/jsx-runtime.js
The React 18 automatic JSX transform runtime (react/jsx-runtime). Vite externalises it into its own chunk so it can be shared between main.js and components/ArcadeButton.js without being duplicated.
components/ArcadeButton.js
An independently loadable ES module for the neon navigation button component. Because ArcadeButton is referenced by <link rel="modulepreload"> in every HTML shell, the browser can fetch and parse it in parallel with main.js. The file imports React core from useScreenInit.js and bundles React DOM and Framer Motion directly, making it self-contained for preload purposes. See Components for the full prop API.
components/ScanlineOverlay.js
A compact module exporting the ScanlineOverlay component — the fixed, full-screen CRT effect layer rendered above all page content. Like ArcadeButton.js, it is modulepreloaded in every HTML shell for fast first paint. See Components for implementation details.
pages/*.html
One HTML shell per route. Each file is structurally identical to index.html with two differences:
<title>— reflects the page name (e.g.About | dev-mode).window.__STATIC_PAGE_ROUTE__— set to the route’s hash path (e.g."/about"), so the SPA can read the intended destination before React has mounted.