Getting witch-dev running on your machine is intentionally frictionless. Because the entire portfolio is a static client-side React application with no back-end services, database connections, or environment secrets required, you can go from zero to a fully animated, particle-filled local preview in the time it takes to brew a coffee.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/witch-dev/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before you begin, make sure the following tools are installed:- Node.js 18 or later — witch-dev uses Vite 5 and React 18, both of which require a modern Node runtime. Check your version with
node -v. - npm 9 or later — ships bundled with Node 18+. Verify with
npm -v. - Git — needed to clone the repository. Any recent version works.
Setup
Clone the repository
Clone the witch-dev repository to your local machine:This downloads the full project including the pre-built Vite bundles in
assets/ and the component source files in components/.Install dependencies
Install all npm dependencies defined in The install pulls in React 18.3.1, Vite, Framer Motion, React Router, Tailwind CSS, and Lucide React — the complete stack that powers the portfolio.
package.json:Start the development server
Launch the Vite dev server:Vite starts on http://localhost:5173 by default and opens the portfolio in your browser. You’ll immediately see:
- A near-black (
#0a0612) background with 40 glowing green particles drifting upward and animated purple fog blobs softly pulsing behind the content - A green cursor glow and a trailing stream of purple particles following your mouse across the screen
- The fixed left-side navigation bar with icon-only links and hover tooltips showing the occult labels (Summon, Origins, Grimoire, Affinities, Scrolls, Raven)
- The Home page typewriter animation spelling out Alysha’s introduction
Explore the pages
Navigate through all six sections of the portfolio using the side navigation or by visiting the hash routes directly:
On mobile viewports (below Tailwind’s
| Route | Hash URL | Occult Label |
|---|---|---|
| Home | http://localhost:5173/#/ | Summon |
| About | http://localhost:5173/#/about | Origins |
| Projects | http://localhost:5173/#/projects | Grimoire |
| Skills | http://localhost:5173/#/skills | Affinities |
| Writing / Blog | http://localhost:5173/#/writing | Scrolls |
| Contact | http://localhost:5173/#/contact | Raven |
md breakpoint), the side nav is hidden and a hamburger button appears in the top-right corner. Tapping it opens a full-screen animated overlay with staggered entry animations for each link.Customizing Content
witch-dev ships as a compiled Vite build. The React application logic — including all page content, project data, skills data, and writing posts — lives inside the minifiedassets/main.js bundle. The key areas to update when making the portfolio your own are:
Navigation labels & icons
Route paths, occult labels, and Lucide icons are driven by the
ua array in the source project’s Navigation component. Like all other component files, components/Navigation.js in the deployed output is compiled code — update the source and rebuild with npm run build to change them.Projects list
The projects carousel data array is compiled into
assets/main.js. To update your projects, edit the source data before rebuilding with npm run build.Skills & proficiency levels
The radar chart data for the Affinities page (skill names and numeric levels) is also bundled in
assets/main.js. Update the source array and rebuild to change what appears on the chart.Writing posts
Blog/writing entries shown on the Scrolls page are stored as a data array in the bundle. Add, remove, or edit entries in the source and rebuild.
Navigation Routes Array
The navigation is driven by theua array in the compiled components/Navigation.js. In readable form, each entry maps a path to an occult label and a Lucide icon:
Hash-Based Routing
witch-dev uses React Router’sHashRouter, which prepends # to every route. This means:
- The Home page lives at
/#/rather than/ - The About page lives at
/#/aboutrather than/about - And so on for all six routes
index.html entry file includes a small bootstrap script that redirects any bare URL (no hash) to /#/ on first load:
Hash routing is what enables zero-configuration static hosting. GitHub Pages, Netlify, Vercel, and any CDN-backed static host can serve the portfolio without needing server-side URL rewrites, because the hash fragment is never sent to the server.