Dark Retro Webpage is a Vite + React 18 static site. The repository contains the pre-built output alongside the original component source, so you can run the site immediately after cloning or modify the source and rebuild. This guide walks you through every step from cloning to a live deployment.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dark-retro-webpage/llms.txt
Use this file to discover all available pages before exploring further.
Local Setup
Install dependencies
Install the Node dependencies with your preferred package manager. These commands apply when working from the original Vite source project (the published repository is the pre-built static output and does not include a
package.json):Start the development server
Launch Vite’s dev server with hot module replacement (requires the original Vite source project with a Vite will start at http://localhost:5173 by default and print the exact URL to the terminal. Changes to components or styles reload the browser instantly.
package.json):Dark Retro Webpage uses React Router configured with a hash history, meaning every route is prefixed with
/#/. The full list of routes is: /#/, /#/about, /#/projects, /#/skills, /#/writing, /#/case-studies, and /#/contact. Because routing happens entirely client-side via the URL hash, no server-side rewrite rules are needed on any static host.Build for Production
Run the Vite production build to generate an optimized, minified static bundle (requires the original Vite source project with apackage.json):
dist/ directory. The folder is self-contained — copy its contents to any web server, CDN bucket, or static host and the site is live. The published repository is itself the pre-built output, so you can also deploy directly from the repo root without running a build step.
Project Structure
The repository is the pre-built static output of the Vite project. The key files and directories are:index.html— The root HTML shell. Includes a small inline script that redirects bare-path requests to the#/hash so the router initializes correctly on first load..nojekyll— Empty file that prevents GitHub Pages from running Jekyll processing on the Vite output.canvas.manifest.js— Preload manifest used by the bundler to declare module dependencies for the canvas entry.useScreenInit.js— The React 18 runtime and shared dependencies (Framer Motion, React Router) extracted into a separate module for preloading.assets/main.js— The full bundled React application, including all page components, routing logic, and Framer Motion.assets/main.css— The Tailwind CSS output plus all custom retro tokens,.bevel-*classes,.crt-overlay, and Google Fonts imports.components/Win98Window.jsandcomponents/Marquee.js— The two reusable UI components, shipped as ES modules so they can be imported independently if needed.pages/— Static HTML shells for each route. Each file mirrorsindex.htmlbut setswindow.__STATIC_PAGE_ROUTE__to its own path so server-side prerendering metadata is accurate.
Deploying
Thedist/ build output (or the repo root itself, since it is already the built site) can be deployed to any static hosting service.
GitHub Pages
Push the repo to a GitHub repository and enable Pages from the repository Settings → Pages menu. Set the source to the branch containing the built files (e.g.main) and the root directory /. The .nojekyll file in the repo root is already present to prevent Jekyll from interfering with the Vite output.
Netlify
Drag the repo root folder into the Netlify dashboard, or connect the repository. If deploying from the pre-built repo root directly, leave the build command blank and set the publish directory to/. If building from the original Vite source, set:
| Setting | Value |
|---|---|
| Build command | npm run build |
| Publish directory | dist |
_redirects file or redirect rules are needed.
Vercel
Import the repository in the Vercel dashboard. Vercel auto-detects Vite and sets the correct build command and output directory. No additional configuration is required for hash routing.Troubleshooting
The page loads but navigating to a route shows a 404
The page loads but navigating to a route shows a 404
Styles are missing or the CRT overlay is not visible
Styles are missing or the CRT overlay is not visible
Ensure
assets/main.css is being served and loaded. In development, Vite injects styles via HMR; in production, the <link> tag in index.html loads ./assets/main.css via a relative path. If you move index.html out of the project root, update the asset paths accordingly. Also confirm your browser is not blocking Google Fonts requests, as the three typefaces (Press Start 2P, DM Mono, Space Grotesk) are loaded from fonts.googleapis.com.Framer Motion animations are not playing
Framer Motion animations are not playing
Framer Motion respects the operating system’s
prefers-reduced-motion setting. If you have reduced motion enabled in your OS accessibility settings, animations will be disabled automatically. To test animations regardless of this setting, temporarily override the media query in DevTools or disable reduced motion in your OS preferences.