Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/apursley2012/fortune-seeker/llms.txt

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

Fortune Seeker is distributed as a Vite static build output rather than raw source files. When Vite compiles a React application it produces a self-contained bundle: an HTML shell, a JavaScript bundle containing the entire React app, a compiled CSS stylesheet, and several smaller JS modules for shared dependencies. All of these files live in the repository root and the assets/ folder, ready to serve directly from any static host. The components/ folder sits alongside them, containing the individual ES module components that index.html preloads via <link rel="modulepreload"> tags.

Directory Tree

fortune-seeker/
├── index.html              # App entry point (Vite SPA shell)
├── home.html               # Static page (GitHub Pages compat)
├── about.html
├── articles.html
├── casestudies.html
├── contact.html
├── projects.html
├── skills.html
├── testimonials.html
├── work.html
├── writing.html
├── placeholders.html
├── .nojekyll               # Disables Jekyll on GitHub Pages
├── assets/
│   ├── main.js             # Compiled React app bundle
│   ├── main.css            # Compiled Tailwind + custom styles
│   ├── index.js            # Framer Motion / AnimatePresence
│   ├── proxy.js            # Framer Motion internals
│   ├── jsx-runtime.js      # React JSX runtime
│   └── createLucideIcon.js # Lucide icon factory
└── components/
    ├── TarotCard.js        # Flipping card component
    ├── CrystalBall.js      # Glass sphere visual
    ├── CandleFlame.js      # Animated flame particles
    ├── Layout.js           # App shell wrapper
    ├── Navigation.js       # Slide-in nav drawer
    ├── Starfield.js        # Canvas star background
    └── CustomCursor.js     # Glowing custom cursor

Key Files Explained

File / FolderPurpose
index.htmlThe single HTML shell Vite uses as the SPA entry point. It mounts the React app into <div id="root"> and preloads all JS modules.
home.htmlwriting.htmlPer-route HTML files for GitHub Pages compatibility. Each file is a copy of the SPA shell so that direct URL navigation resolves correctly.
.nojekyllAn empty marker file that tells GitHub Pages not to process the repository with Jekyll, preventing it from ignoring assets/ and other underscore-prefixed paths.
assets/Vite’s compiled build output. Contains the React app bundle, Tailwind stylesheet, and split dependency chunks.
components/Individual compiled ES module components loaded via modulepreload.

Static HTML Pages

GitHub Pages serves static files and does not understand client-side routing. When a visitor navigates directly to https://your-username.github.io/fortune-seeker/about, GitHub Pages looks for a file named about.html or about/index.html. Without it the server returns a 404. Fortune Seeker solves this with a per-route HTML file for every React Router path. Each file — home.html, about.html, projects.html, skills.html, work.html, casestudies.html, articles.html, writing.html, testimonials.html, contact.html — is a copy of index.html that loads the same assets/main.js bundle. React Router takes over once the bundle boots and renders the correct page component based on the URL path.

Assets Folder

The assets/ folder is the direct output of vite build. It contains:
FileContents
main.jsThe full compiled React application. Every page component, all route definitions, and all business logic are bundled here.
main.cssThe compiled Tailwind CSS stylesheet plus custom utility classes for 3D card transforms (preserve-3d, backface-hidden, rotate-y-180), the gold text-shadow effect, and the waver keyframe animation. Google Fonts for Cormorant Garamond and Inter are imported at the top of this file.
index.jsThe Framer Motion library, including AnimatePresence for page transitions.
proxy.jsFramer Motion’s internal motion component factory (motion.div, motion.path, etc.) and animation utilities.
jsx-runtime.jsThe React JSX transform runtime (jsx, jsxs, Fragment).
createLucideIcon.jsThe Lucide React icon factory function used to construct icon components such as Flame, Send, Sparkles, and Github.

Components Folder

Each file in components/ is a compiled ES module. index.html uses <link rel="modulepreload"> to instruct the browser to fetch these modules early, before main.js executes and imports them. This eliminates a round-trip waterfall at startup.
ComponentWhat it does
TarotCard.jsRenders a two-faced card with a 3D CSS flip animation driven by Framer Motion. Accepts frontContent, backContent, isFlipped, and an onClick handler. Used on the homepage, /about, /projects, and /case-studies.
CrystalBall.jsA glass sphere visual with radial gradient lighting and a layered glow effect. Featured prominently on the /about page.
CandleFlame.jsParticle-based animated flame rendered with Framer Motion. Used as an atmospheric accent throughout the site.
Layout.jsThe top-level app shell that wraps every page. Mounts Starfield, CustomCursor, Navigation, and CandleFlame as persistent background layers.
Navigation.jsA slide-in drawer navigation built with React Router v6 hooks and Framer Motion. Also bundles the React DOM render call that mounts the app into #root.
Starfield.jsA <canvas> element that fills the viewport with drifting gold particles connected by faint lines when they pass within 100 px of each other. Runs on requestAnimationFrame and responds to window resize.
CustomCursor.jsReplaces the default OS cursor with a glowing gold dot that tracks mouse position via Framer Motion’s useMotionValue. The default cursor is hidden globally in main.css.
Because this repository is a static build export, the original TypeScript and JSX source files are not included. The .js files in components/ are compiled ES modules — they are valid JavaScript but are not human-editable source code. To modify component behaviour, fork the project, rebuild it from source with npm run build, and commit the new output. The compiled bundle in assets/main.js contains all page components and cannot be edited directly.

Build docs developers (and LLMs) love