The Webmaster repository is a pre-compiled static site. Opening the project root, you’ll find noDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/webmaster/llms.txt
Use this file to discover all available pages before exploring further.
package.json or node_modules — Vite has already run, producing a self-contained set of HTML, JavaScript, and CSS files that can be served directly from any static host. Understanding how these files relate to each other makes it easy to locate the code behind any visual element or route.
File Tree
This repository contains the pre-built static output of a Vite project — there is no
package.json in the root. All source compilation has already taken place. The JavaScript files in components/ are Vite-compiled ES modules, not raw JSX source files. To modify and rebuild the app, you would need access to the original Vite development workspace with its src/ directory and package.json.index.html — The SPA Entry Point
The entire application boots from a single HTML file. It contains nothing but a <div id="root"> mount target and a set of <script> and <link> tags:
<link rel="modulepreload"> entries, which instructs the browser to fetch and parse them in parallel with main.js before they are needed — eliminating waterfall loading delays for the initial render.
React mounts into <div id="root"> and takes over all DOM rendering from that point forward. No other HTML content exists in the file.
assets/ — Bundled Application
The assets/ directory contains three files that form the complete application:
assets/main.js
This is the heart of the application — a single compiled JavaScript bundle produced by Vite that contains:
- React 18 and ReactDOM — the full React runtime and renderer
- React Router v6 —
BrowserRouter,Routes, andRoutecomponents - Framer Motion — the full animation library (the compiled bundle includes the complete Framer Motion runtime)
- All nine page components — Home, About, Skills, Projects, Work, CaseStudies, Blog, Contact, and Testimonials
- The
Appcomponent — containing the React Router v6<Routes>tree with nine<Route>elements - React Scheduler — for concurrent rendering
main.js follows this pattern:
assets/jsx-runtime.js
The React JSX transform runtime. When Vite compiles JSX, it replaces React.createElement(...) calls with imports from this module. It is declared as a modulepreload in index.html so it is available before any component code executes.
assets/main.css
A single compiled stylesheet containing the full Tailwind CSS utility output plus all custom retro styles. Key sections include:
CSS custom properties (design tokens):
| Class | Effect |
|---|---|
.bevel-container | Raised Win98-style 3D border |
.bevel-container-inset | Recessed/inset 3D border (used by VisitorCounter) |
.bevel-button | Clickable raised button surface |
.retro-dashed | Dashed border in hotpink |
.retro-dotted | Dotted border decoration |
.rainbow-text | CSS background-clip: text rainbow gradient |
.marching-ants | Animated dashed border that appears to march |
.scanlines | Horizontal scanline overlay pseudo-element |
| Animation | Used by |
|---|---|
marquee | MarqueeStrip — drives the infinite horizontal scroll |
blink | Cursor and notification elements |
bob | Floating/bobbing UI elements |
rainbow-bg | Background hue-shift on hero elements |
border-dance | marching-ants border animation |
components/ — ES Module Components
Each file in components/ is a Vite-compiled ES module that exports exactly one React component. They import from ../assets/jsx-runtime.js for JSX support. All eight components are:
RetroNav.js — Sticky Navigation Bar
RetroNav.js — Sticky Navigation Bar
SparkleCursor.js — Sparkle Particle Effect
SparkleCursor.js — Sparkle Particle Effect
Tracks The component renders into a
mousemove events on window and spawns short-lived ✦ glyphs at the cursor position. Each sparkle is assigned a random size (5–15px), one of four colors (#FF69B4, #00CED1, #FFFACD, #FFFFFF), and a random rotation. Each particle uses the animate-ping Tailwind class and is removed from the DOM after 800ms via setTimeout. Respects prefers-reduced-motion:pointer-events: none fixed overlay at z-index: 9999.MarqueeStrip.js — Scrolling Ticker
MarqueeStrip.js — Scrolling Ticker
Accepts a
text prop and an optional className. Renders the text twice inside an animate-marquee container to create a seamless infinite scroll. Styled with a black background, lemon (#FFFACD) VT323 pixel font text, and a hot-pink top/bottom border:PageTransition.js — Route Animation Wrapper
PageTransition.js — Route Animation Wrapper
Wraps page content with Framer Motion’s
AnimatePresence to animate entries and exits on route changes. Every page component is wrapped in <PageTransition> inside the router, producing a consistent fade-and-translate transition between all nine routes.VisitorCounter.js — LED Visitor Display
VisitorCounter.js — LED Visitor Display
Initialises a
useState counter at 1336, then increments it by 1 after a 1500ms setTimeout on mount. Renders each digit of the zero-padded six-digit number as a separate div styled to look like a red-on-black seven-segment LED display with text-shadow: 0 0 5px rgba(255,0,0,0.5). Uses the .bevel-container-inset class for the surrounding panel.Button88x31.js — Web Badge Component
Button88x31.js — Web Badge Component
WebringBadges.js — Webring Badge Row
WebringBadges.js — Webring Badge Row
Renders a horizontal row of
Button88x31 instances representing fictional or real webring memberships — a staple of late-1990s personal pages.UnderConstructionSign.js — Construction Banner
UnderConstructionSign.js — Construction Banner
pages/ — Static HTML Fallbacks
The pages/ directory contains eight standalone HTML files — one for each non-home route:
pages/ HTML files are not loaded by the SPA during normal navigation.
CSS Architecture Summary
The styling system combines two layers:-
Tailwind CSS utility classes — generated at build time based on the classes found in component source. Utility classes like
bg-black,text-lemon,font-pixel,animate-marquee,z-[9999], andbevel-container-insetare all present inassets/main.css. - Custom CSS — hand-authored classes and keyframe animations appended after the Tailwind output. These define the bevel effects, rainbow text, scanlines, marching ants borders, and the five custom animation sequences that give the site its Y2K character.
assets/main.css file — there is no runtime CSS-in-JS, no CSS modules, and no separate theme file.