Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/apursley2012/choose-your-destiny/llms.txt

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

Choose Your Destiny ships as a fully pre-built static site. Every HTML, CSS, and JavaScript file is already compiled and ready to serve — there is no package.json, no node_modules, and no build step required to view or deploy it. You can open index.html directly in a browser, drop the files onto any static host, or serve them with any HTTP server.

Viewing Locally

Because the portfolio uses ES modules (<script type="module">), browsers block module loading from file:// URLs due to CORS restrictions. Use any local HTTP server to serve the files:
1

Clone the repository

Pull the pre-built files from GitHub:
git clone https://github.com/apursley2012/choose-your-destiny.git
cd choose-your-destiny
2

Serve the files locally

Start any static HTTP server from the repository root. A few options:
python3 -m http.server 8080
Then open http://localhost:8080/ in your browser. You should see the Home screen with the animated perspective grid and neon glow effects.
You can also use the Live Server extension in VS Code — right-click index.html and choose “Open with Live Server” for an instant preview without any terminal commands.

Project Structure

choose-your-destiny/
├── index.html              # Entry point with hash redirect script
├── pages/                  # Per-route static HTML shells
│   ├── Home.html
│   ├── About.html
│   ├── Projects.html
│   ├── Skills.html
│   ├── Writing.html
│   ├── CaseStudies.html
│   └── Contact.html
├── assets/
│   ├── main.js             # Bundled React app (Framer Motion included)
│   ├── main.css            # Tailwind base + custom neon styles
│   ├── index.js            # React 18 runtime
│   └── jsx-runtime.js      # Automatic JSX transform
├── components/
│   ├── UIComponents.js     # NeonCard, NeonButton, TerminalLine, BlinkingCursor
│   └── VisualEffects.js    # GlitchText, ScanlineOverlay, CRTFlicker, PerspectiveGrid
├── canvas.manifest.js      # Static routing manifest (screen IDs → route paths)
├── useScreenInit.js        # Resolves active screen from ?mp_screen= query param
└── .nojekyll               # Prevents GitHub Pages from running Jekyll
Key files at a glance:
  • index.html — Contains an inline <script> that redirects any bare pathname to its #/ hash equivalent on first load. This is how the router bootstraps without a server rewrite rule.
  • canvas.manifest.js — Maps seven logical screen IDs (e.g. scr_4sn1by) to route paths (/, /about, /projects, etc.) and canvas coordinates. The useScreenInit hook reads this manifest to determine which section to display.
  • components/UIComponents.js — All interactive primitives: NeonCard, NeonButton, TerminalLine, and BlinkingCursor. Import from here rather than building one-off styled elements.
  • components/VisualEffects.js — Ambient layer components rendered once at the app root: ScanlineOverlay, CRTFlicker, PerspectiveGrid, and GlitchText.

Customizing the Portfolio

All visual customization is done by editing the pre-built static files directly — there is no source compilation needed for most changes. Changing neon colors — Every accent color is declared as a CSS custom property in assets/main.css. Edit these values and refresh your browser:
:root {
  --neon-cyan:    #22d3ee;
  --neon-magenta: #ec4899;
  --neon-purple:  #a855f7;
  --neon-lime:    #a3e635;
  --neon-orange:  #fb923c;
}
Changing content — Each section of the portfolio corresponds to a pages/*.html file. Edit the HTML in those files to update your bio, project list, skills, and contact details.
For deeper changes — such as modifying React component logic, reworking layouts, or adding new routes — you will need to work from the original source code and rebuild with Vite. The files in this repository are the compiled output; they are not intended to be edited as source.

Deployment

Because the repository contains 100 % static files, it deploys directly to any static host without a build step. GitHub Pages — A .nojekyll file is included at the repository root so GitHub Pages does not try to process the output with Jekyll. Point Pages at the repository root (or a gh-pages branch) and you are done. Netlify — Drag and drop the repository folder in the Netlify UI, or connect the repo and set the publish directory to / (the repo root) with no build command. Vercel — Connect the repo, set the output directory to . (root), and leave the build command blank. Vercel will serve the static files directly. Any CDN or object storage — Upload all files preserving the directory structure. The site has no server-side dependencies.
The hash-based router (/#/about, /#/projects, etc.) means no server-side URL rewriting is needed — and none should be configured. If you set up a catch-all redirect (e.g., Netlify’s _redirects rule pointing everything to /index.html), it will conflict with the per-section static HTML shells in pages/. Leave server rewrites unconfigured and let the inline hash-redirect script in each HTML file handle bootstrapping.

Build docs developers (and LLMs) love