witch-dev is hosted on GitHub Pages, which serves files directly from a repository’s output directory without any server-side URL rewriting. TraditionalDocumentation 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.
BrowserRouter-style paths (e.g. /about) would return a 404 when accessed directly because GitHub Pages has no fallback index.html mechanism for arbitrary paths. witch-dev solves this by using hash-based routing: the hash fragment (#/about) is never sent to the server, so GitHub Pages always serves the correct HTML file while React Router reads the fragment and renders the right component entirely in the browser.
Route Table
Every navigation entry maps a hash URL to a React Router path, a thematic label drawn from the site’s occult aesthetic, and a Lucide React icon.| Hash URL | Route | Theme Label | Icon |
|---|---|---|---|
/#/ | / | Summon | Hexagon |
/#/about | /about | Origins | Sparkles |
/#/projects | /projects | Grimoire | BookOpen |
/#/skills | /skills | Affinities | BrainCircuit |
/#/writing | /writing | Scrolls | Scroll |
/#/contact | /contact | Raven |
Static HTML Shell Pattern
The rootindex.html doubles as the Home page shell. It sets window.__STATIC_PAGE_ROUTE__ and then runs a redirect IIFE that ensures the URL always carries the hash fragment before React boots:
!window.location.hash || window.location.hash === "#") means the redirect only fires when the hash is absent or empty. If the user already has a full hash URL (e.g. from a bookmark or a link), the page loads immediately without an extra navigation.
Per-Route Shell Files
Each route underpages/ has its own HTML file that follows the same pattern. pages/About.html sets the route to /about and redirects to #/about:
../assets/main.js) and mount into <div id="root"></div>. The shells are thin wrappers — they contain no component logic of their own.
pages/CaseStudies.html also exists in the repository as a shell stub, though it does not appear in the navigation array and has no corresponding page component in the current bundle.canvas.manifest.js
canvas.manifest.js is a screen manifest generated by the visual canvas tooling used during development. It maps internal screen identifiers to their route paths and display names. At runtime, useScreenInit.js imports this manifest to initialise router state before the first render, ensuring the correct page is active on first load without relying solely on the hash fragment.
scr_4sn1by). Additional screens added through the canvas tool would appear here as new entries under screens.
Adding a New Route
Follow these four steps to add a new page to witch-dev:Create the static HTML shell
Add
pages/MyPage.html. Copy the pattern from any existing shell and update the route string:Add the entry to the navigation array
In the navigation config (inside the compiled bundle source, corresponding to
Navigation.js), add a new object to the ua array:Create the page component
Build your page as a React component and register it with the router alongside the existing routes (e.g.
<Route path="/my-page" element={<MyPage />} />).