Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/apursley2012/neon-retro-web/llms.txt

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

The neon-retro-web repository is a pre-built static site — it contains the final, ready-to-deploy output that was generated by Vite from the original React source project. There is no package.json, no src/ directory, and no vite.config.js inside this repository. You do not need to run a build step to deploy it: the files that are already present are exactly what needs to be served.
This repository IS the build output. To deploy, simply serve the repo root as a static site — no build command required. If you want to customise the portfolio and rebuild, see Rebuilding from Source below.

What the Repo Contains

The repository root holds the following layout — exactly as Vite produced it:
neon-retro-web/
├── index.html                   # Root entry point (serves the Home route)
├── .nojekyll                    # Disables Jekyll processing on GitHub Pages
├── useScreenInit.js             # React initialisation chunk (module preload)
├── canvas.manifest.js           # Empty manifest file (part of the build output)

├── assets/
│   ├── main.js                  # Full React app bundle (minified)
│   ├── main.css                 # Compiled CSS (Tailwind + neon-retro styles)
│   └── createLucideIcon.js      # Lucide icon helper chunk

├── components/
│   ├── RetroElements.js         # Neon / retro UI component chunk
│   └── Window.js                # Window chrome component chunk

└── pages/
    ├── Home.html
    ├── About.html
    ├── Projects.html
    ├── Skills.html
    ├── Writing.html
    ├── CaseStudies.html
    └── Contact.html

File-by-file breakdown

index.html

The root entry point served at /. Loads assets/main.js, preloads all chunks via modulepreload links, and embeds the hash-redirect script targeting #/.

pages/*.html

One HTML file per route. Each sets its own window.__STATIC_PAGE_ROUTE__ value and redirects to the matching hash on first load.

assets/main.js

The complete, minified React application bundle. Every component, route, and page is included here.

assets/main.css

All Tailwind utility classes and custom neon-retro styles compiled into a single, optimised stylesheet.

assets/createLucideIcon.js

A shared helper chunk for Lucide icons, split out to enable efficient module preloading.

components/RetroElements.js & Window.js

Heavier UI component chunks preloaded in parallel with the main bundle to reduce time-to-interactive.

useScreenInit.js

React screen-initialisation logic extracted as a preloadable module so it can be fetched early.

.nojekyll

An empty marker file that tells GitHub Pages not to run Jekyll processing on the repository. Without it, GitHub Pages could ignore files with underscore-prefixed names and garble asset paths.

How Hash Routing Is Wired In

Every HTML file — both index.html and each file in pages/ — contains an inline script that performs two jobs:
  1. Declares the page’s logical route by setting window.__STATIC_PAGE_ROUTE__. The React app reads this value on startup to determine which route to activate.
  2. Ensures a hash is always present in the URL. If the user lands on the bare URL (no hash), the script immediately replaces the location with the same path appended with #/, so React Router initialises correctly.
<script>
  window.__STATIC_PAGE_ROUTE__ = "/";

  (function () {
    if (!window.location.hash || window.location.hash === "#") {
      window.location.replace(
        window.location.pathname +
        window.location.search +
        "#/"
      );
    }
  })();
</script>
Each page in pages/ sets its own route value. For example, pages/About.html sets window.__STATIC_PAGE_ROUTE__ = "/about" and redirects to #/about. This means the React app always boots into the correct view regardless of which HTML file the browser fetched — no server-side redirect rules are required.

Previewing Locally

Because the site is already built, you can preview it with any local static file server. No Vite or Node.js installation is required:
# Using Python (available on most systems)
python3 -m http.server 8080

# Using Node.js npx (if Node is installed)
npx serve .
Then open http://localhost:8080 in your browser. Navigate between pages to confirm the hash-redirect script fires correctly and all assets load.
assets/main.js and assets/main.css are build artifacts — they are minified, generated files. Do not edit them directly. Any manual edits will be meaningless without the original source project and will be overwritten if you ever rebuild from source.

Rebuilding from Source

This repository contains only the compiled output. If you want to customise the portfolio — changing colours, adding pages, editing components — you need the original Vite source project that produced this output. That source project would contain:
  • package.json and node_modules/
  • src/ — React components, pages, and styles in their uncompiled form
  • vite.config.js or vite.config.ts — the Vite build configuration
With the source project set up, the typical development workflow is:
# Install dependencies
npm install

# Start the Vite dev server
npm run dev

# Make your changes in src/, then build
npm run build
Vite writes the compiled output directly to the repository root (no separate dist/ folder), so after building you commit and push the updated files to deploy.
If you only want to deploy the portfolio as-is without any customisation, you do not need the source project at all. Follow the Static Hosting guide to put the existing built files online in minutes.

Build docs developers (and LLMs) love