Spooky Developer follows a flat, purposeful directory layout. There are no deeply nested feature folders — each directory has a single clear responsibility, which makes it easy to locate any piece of functionality and swap in your own content.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/spooky-developer/llms.txt
Use this file to discover all available pages before exploring further.
Directory Tree
Directory Roles
assets/
This directory contains the pre-built JavaScript and CSS modules that power the application. All files are ready to serve directly — no build step is required.
| File | Purpose |
|---|---|
main.js | The primary entry module. Defines every page component — HomePage, AboutPage, ProjectsPage, SkillsPage, WorkPage, CaseStudiesPage, ArticlesPage, TestimonialsPage, ContactPage, NotFoundPage — and the root App function that wires them into React Router. |
HauntContext.js | Exports HauntProvider (the context provider) and useHaunt (the consumer hook). All global interactive state lives here. |
main.css | Tailwind CSS base/components/utilities layers plus any custom @keyframes for the flicker and float animations used throughout the UI. |
proxy.js | Re-exports the motion object from Framer Motion so page components can import it without a direct dependency string. |
index.js | Re-exports AnimatePresence from Framer Motion, used by the contact page to animate the ghost pop-up on form submission. |
components/layout/
The layout shell that wraps every page. Layout.js is the React Router parent route element — it renders the sticky Nav, the three scare components, the animated Background, an <Outlet /> for the active page, and the Footer (which contains the haunt mode toggle).
components/scares/
Three self-contained effect components that mount globally inside Layout. Each one reads isHaunted from useHaunt() and activates or deactivates accordingly:
CursorTrail— attaches tomousemoveevents and renders a trail of ghost particles following the cursor.SpiderScare— listens for the firstclickevent (tracked viaregisterClick/hasClickedin context) and drops an animated spider from the top of the viewport.IdleGhost— sets an inactivity timer; after a period without user interaction it slides a ghost character in from the edge of the screen.
components/icons/
A single file, SpookyIcons.js, that exports five SVG icon components: GhostIcon, BatIcon, SpiderIcon, PumpkinIcon, and CandyIcon. These are used across pages and in the scare components.
pages/
Pre-built static HTML stub files (e.g., About.html, Projects.html) that can serve as fallback targets for direct URL access or for static hosting configurations that require individual HTML files per route.
Static Deployment
Because Spooky Developer is a pre-built SPA, no compilation step is needed. The repository root is the deployable artifact —index.html bootstraps the app, and all assets are referenced by their stable filenames (main.js, main.css, etc.).
The .nojekyll file at the root tells GitHub Pages to skip Jekyll processing and serve the files as-is, which is required for the module imports to resolve correctly.