NeonRetro Sys_Admin is a pure client-side single-page application. There is no server, no database, and no backend — every page is rendered in the browser from the compiled JavaScript bundle. This means the entire site can be served from any static file host: a GitHub Pages repository, a Netlify site, a Vercel project, an S3 bucket, or even a basic CDN. The only step between your editedDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/neon-retro-sys-admin/llms.txt
Use this file to discover all available pages before exploring further.
mockData.js and a live URL is a Vite build.
Building for production
Run the build command from the project root. Vite compiles, tree-shakes, and hashes the output into adist/ directory that is completely self-contained.
index.html at the root, compiled code split across assets/, components/, data/, and pages/ subdirectories:
dist/ is safe to serve as-is. The SPA handles client-side routing internally via React Router v6.
GitHub Pages
Configure the homepage URL
In your Vite config (or If you are deploying to a custom domain (e.g.
package.json), set the base path to match your GitHub Pages URL so that asset references resolve correctly:https://yourname.github.io), set base: '/'.Deploy the dist/ folder
Push the contents of
dist/ to the gh-pages branch of your repository, or configure GitHub Actions to do it automatically on every push to main. A minimal workflow using the popular peaceiris/actions-gh-pages action looks like this:The .nojekyll file
The repository ships with a .nojekyll file at the root, which Vite copies into dist/ during the build. This file tells GitHub Pages to skip Jekyll processing entirely. It is critical for Vite projects because Vite’s output includes files and directories that start with an underscore (e.g. assets/_chunks/). Without .nojekyll, GitHub Pages would silently ignore those files and the deployed site would fail to load.
Netlify
Connect the repository
Log in to Netlify, click Add new site → Import an existing project, and authorize GitHub. Select your fork of the NeonRetro Sys_Admin repository.
Configure the build settings
Netlify will attempt to auto-detect the framework. Confirm or set these values manually:
| Setting | Value |
|---|---|
| Build command | npm run build |
| Publish directory | dist |
| Node version | 20 (set in Environment variables as NODE_VERSION=20) |
Vercel
Confirm the framework preset
Vercel auto-detects Vite projects. The following settings are pre-filled — confirm they are correct:
| Setting | Value |
|---|---|
| Framework preset | Vite |
| Build command | npm run build |
| Output directory | dist |
Environment variables
No environment variables are required to build or run NeonRetro Sys_Admin. The application has no backend, no API keys, and no third-party service credentials. The only external network requests at runtime are the Google Fonts@import in main.css — and even those can be self-hosted by downloading the font files and updating the @import path if you need a fully offline-capable build.
Contact form
The contact / guestbook form in the portfolio is front-end only. It validates and renders submission state in the UI, but it does not send data anywhere out of the box. To actually receive messages, wire the form’s submit handler to a form backend:- Formspree — add a
<form action="https://formspree.io/f/<your-id>">endpoint; no server required. - Resend — call the Resend REST API from a lightweight serverless function on Vercel or Netlify.
- Netlify Forms — add
netlifyattribute to the<form>element; Netlify captures submissions automatically with no extra code when deployed to Netlify.
The contact form is entirely front-end: submissions are not persisted or emailed unless you integrate a backend service. The guestbook seed entries in
data/mockData.js are static display data and are not affected by form submissions. See Editing Mock Data for details on the seed entries.