Web Weaver is a static React SPA — there is no backend, no database, and no build-time data fetching. Getting it running locally takes about two minutes, and personalizing it to your own work requires editing a single compiled file. This guide walks through everything from first clone to production deployment.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/web-weaver/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before you begin, make sure you have the following installed:- Node.js 18 or later — Web Weaver uses Vite 5, which requires Node 18+. Check your version with
node -v. - A package manager — npm (ships with Node), yarn, or pnpm all work.
- Git — to clone the repository.
Web Weaver uses hash-based routing (
HashRouter from React Router v6). All routes are prefixed with # in the URL — for example, http://localhost:5173/#/projects. This means the dev server serves only index.html for every path, and there is no need for a custom Vite historyApiFallback configuration. The same behavior carries through to production: you can deploy the dist/ folder to any static host without server-side redirect rules.The pages/ directory contains standalone HTML files (e.g. pages/About.html) that each set window.__STATIC_PAGE_ROUTE__ and redirect the hash on load — enabling direct-link sharing of individual pages even on hosts that don’t support catch-all redirects.Setup
Clone the repository
Clone Web Weaver to your local machine and navigate into the project directory.
Install dependencies
Install the project’s dependencies. This pulls in React 18, React Router v6, Framer Motion, Tailwind CSS, and Vite.
Start the dev server
Run the Vite development server. It starts on port Open http://localhost:5173 in your browser. You should see the Hero landing page with Morgan Weaver’s name, the animated candle, and the glowing EmberCursor following your mouse.
5173 by default with Hot Module Replacement enabled.Build for production
When you’re ready to deploy, run the build command. Vite compiles and bundles everything into the The output in
dist/ directory.dist/ is a self-contained static site. Upload the entire dist/ folder to GitHub Pages, Netlify, Cloudflare Pages, or any static host. No server configuration is required.Customizing Your Content
All portfolio content lives as JavaScript data arrays and string constants insideassets/main.js. After the Vite build this file is minified, but the source variable names are preserved and can be located with a quick search.
Your Name and Tagline
The hero landing page renders the string"Morgan Weaver" as the display name and "Software Sorcery & Digital Hexes" as the tagline. Both are hardcoded inside the HeroSection (I in the minified bundle) component:
Morgan Weaver in assets/main.js and replace it with your own name.
Projects (M array)
Projects are stored in the M array. Each entry has the following shape:
phase field controls which MoonPhase filter tab a project appears under on the /projects route:
| Phase | Moon Icon | Meaning |
|---|---|---|
full | 🌕 Full Moon | Live, shipped work |
waxing | 🌔 Waxing | In active development |
new | 🌑 New Moon | Unreleased / experimental |
waning | 🌘 Waning | Deprecated or winding down |
Skills (T array)
Skills are rendered as labeled nodes on a pentagram SVG at /skills. Each entry specifies a name, a proficiency level from 0–100, and an angle that places the node on the circle:
Work History (x array), Case Studies (F array), Blog Posts (E array), and Testimonials (q array)
The remaining content arrays follow the same pattern — find them by searching for their variable names in assets/main.js:
x— Work experience entries used by the Candle-selector timeline at/work. Each entry hasid,title,company,period,description, andisLit.F— Case study entries used by the WaxSeal scrolls at/case-studies. Each hasid,title,summary, anddetails(revealed when the seal is broken).E— Blog post entries rendered as TarotCards at/blog. Each hasid,title,excerpt,suit(wands/swords/cups/pentacles), andnumber(Roman numeral displayed on the card).q— Testimonials rendered with Familiar animal avatars at/testimonials. Each hastype(cat/raven/owl/toad/bat),quote,author, androle.
Theming
Web Weaver’s entire color system is defined as CSS custom properties inassets/main.css (the Tailwind output). The six core tokens map directly to Tailwind utility classes used throughout the components:
font-serif resolves to Cormorant Garamond and font-mono resolves to JetBrains Mono.