Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/apursley2012/oracle/llms.txt

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

Oracle is deployed on GitHub Pages — a purely static host that serves files from a repository with no server-side routing logic. When a visitor navigates directly to a URL like oracle.example.io/about, the server looks for a file at about/index.html. On a traditional SPA that file doesn’t exist, so the server returns a 404. To sidestep this entirely, Oracle uses React Router v6’s HashRouter: every route lives after the # fragment, which the browser never sends to the server. The server always receives a request for /, always returns index.html, and React Router takes over from there.

Route Map

Oracle defines ten routes — nine content pages and a catch-all 404 fallback. Each route maps to a top-level page component and carries a mystical label used in the navigation sidebar.
PathComponentMystical Label
/<Home />Home
/about<About />About
/projects<Projects />Projects
/skills<Skills />Skills
/work<Work />Work
/case-studies<CaseStudies />Case Studies
/articles<Articles />Articles
/testimonials<Testimonials />Testimonials
/contact<Contact />Contact
*<NotFound />
The navigation sidebar is driven by the zp array, which pairs each path with a display label and a Unicode glyph used as a decorative icon:
const zp = [
  { path: "/",            label: "Home",         glyph: "☉" },
  { path: "/about",       label: "About",        glyph: "☽" },
  { path: "/projects",    label: "Projects",     glyph: "✦" },
  { path: "/skills",      label: "Skills",       glyph: "⚝" },
  { path: "/work",        label: "Work",         glyph: "⚒" },
  { path: "/case-studies",label: "Case Studies", glyph: "☿" },
  { path: "/articles",    label: "Articles",     glyph: "✎" },
  { path: "/testimonials",label: "Testimonials", glyph: "♆" },
  { path: "/contact",     label: "Contact",      glyph: "✉" },
];

Static Page Shim

Although HashRouter handles in-app navigation, GitHub Pages also hosts individual HTML shims for each route (e.g. pages/about.html). This allows canonical per-page URLs to be shared and bookmarked. Each shim injects a small script that sets a window.__STATIC_PAGE_ROUTE__ sentinel and redirects the hash before the React app boots:
<script>
  window.__STATIC_PAGE_ROUTE__ = "/about";
  if (
    !window.location.hash ||
    window.location.hash === "#/" ||
    window.location.hash === "#"
  ) {
    window.location.hash = "/about";
  }
</script>
When the shim is loaded, the script fires before React mounts. If the hash is absent or points to the root, it is rewritten to the page’s own route (e.g. #/about). The app then boots and HashRouter reads the corrected hash, rendering the expected page immediately.

404 Fallback

The path="*" wildcard route catches any hash path that doesn’t match a defined route:
<Route path="*" element={<NotFound />} />
The NotFound page displays the message “This page has vanished into the mist.”, keeping the mystical tone consistent even in error states. Because HashRouter controls all routing, a mistyped hash like #/arcane reaches this component rather than triggering a server 404.
Because HashRouter puts the route after the # fragment, the browser never sends the path to the server. No matter which page a visitor navigates to, the server only ever sees a request for / and returns index.html. All routing decisions happen entirely on the client — making the site fully deployable on any static host with zero server configuration.

Build docs developers (and LLMs) love