Dev Nexus ships as a pre-built static export — you can serve the repo as-is from any static host — but it is also a standard Vite + React project at heart, so the typicalDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dev-nexus/llms.txt
Use this file to discover all available pages before exploring further.
clone → install → dev workflow applies when you want to make changes. This guide walks through every step from cloning the repository to a running local server, then maps out every file and directory you’ll need to know.
Setup
Install dependencies
Install the project’s Node dependencies with your package manager of choice:This pulls in React 18, React Router v6, Framer Motion, Tailwind CSS, Lucide React, and the Vite build toolchain.
Start the development server
Vite’s dev server compiles on the fly and supports hot module replacement:You should see output similar to:
Open in your browser
Navigate to http://localhost:5173 — the app bootstraps immediately and redirects to
/#/ thanks to the inline hash-redirect script in index.html.The full site — particle field, animated transitions, all seven pages — is available for local development without any additional configuration.Build for production
When you’re ready to deploy, generate the optimised static output:Vite bundles and tree-shakes the app into the
dist/ directory, producing the same structure you see in the repository root: an index.html entry point, assets/ for bundled JS and CSS, components/ for pre-built module scripts, and pages/ for per-route HTML shells.Project Layout
The repository root is the static export of the Vite build. Here is every file and what it does:Key files explained
index.html
The SPA entry point. It preloads every component module, loads assets/main.js as an ES module, and includes an inline script that sets window.__STATIC_PAGE_ROUTE__ = "/" before immediately redirecting any bare URL to its hash equivalent:
useScreenInit.js
A React/ReactDOM bootstrap shim that exports React as R and ReactDOM as r. All component files import React hooks and ReactDOM APIs from this module rather than directly from the react package — it acts as the centralised initialisation layer for the entire component tree.
components/ParticleField.js
A <canvas> fixed at z-index: 0 behind every page. Spawns coloured particles (electric-violet #9d4dff, neon-lime #9eff5b, ghost-mint #6dffc7, hot-magenta #ff4ad8) at a density of one particle per 15 000 px² of viewport area, then animates them in a continuous requestAnimationFrame loop with edge-wrapping and per-particle glow.
components/PageTransition.js
Wraps each routed page in a Framer Motion motion.div that animates opacity, scale, and a CSS blur filter on both enter and exit, giving every navigation event a smooth magical-dissolve feel:
components/VialCard.js
An expandable project card styled as an alchemical vial. Cards accept a color prop — "violet", "lime", "mint", or "magenta" — that controls the border accent, glow effect, and tech-tag colours. Clicking a card toggles an AnimatePresence-driven drawer that reveals the project description, tech stack badges, and action buttons (Demo, Source, Case Study).
components/SigilDiagram.js
An animated SVG that renders a five-point skill diagram (FRONTEND, BACKEND, DEVOPS, DATABASE, ARCHITECTURE) as a glowing pentagonal sigil. Each node pulses in its own accent colour, and the connecting lines animate in via Framer Motion’s pathLength from 0 → 1 on mount.
assets/proxy.js
Framer Motion is imported and re-exported from this single file. Every component that needs animation — PageTransition, VialCard, SigilDiagram — imports from ../assets/proxy.js, keeping the bundle’s module graph clean and the Framer Motion version pinned in one place.
pages/*.html
Each file is an identical HTML shell with one difference: the window.__STATIC_PAGE_ROUTE__ value and the hash redirect target. For example, pages/About.html sets window.__STATIC_PAGE_ROUTE__ = "/about" and redirects to #/about. This allows the static files to be served directly (e.g., from a CDN) while still landing users on the correct hash route.
Routing
Dev Nexus uses React Router v6
HashRouter — all routes are hash-based (e.g., /#/about, /#/projects). This means the server never needs to handle client-side routes; every request serves the same index.html, and React Router reads the fragment portion of the URL to determine which page component to render.The static HTML shells in pages/ each inject window.__STATIC_PAGE_ROUTE__ and run a self-invoking function on load that redirects the visitor to the hash equivalent of that route. This means a direct link to /pages/About.html will transparently land the user at /#/about without a 404.components/NavBar.js:
useLocation hook; the matching nav item receives text-neon-lime text-glow-lime classes and its label is wrapped in brackets — [ ARSENAL ] — while inactive items render as dimmed moonlight/70 text that glows electric-violet on hover.