This section of the docs covers everything under the hood of Full Stack Sorcery — the build tooling, dependencies, file organisation, route definitions, and the layout system that wires ambient effects and page transitions together across every view.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/full-stack-sorcerer/llms.txt
Use this file to discover all available pages before exploring further.
Tech Stack
| Technology | Version | Role |
|---|---|---|
| React | 18 | UI component framework |
| React Router | v6.30.4 | Client-side routing (BrowserRouter) |
| Framer Motion | latest | Page transitions, drag, spring animations |
| Tailwind CSS | latest | Utility-first styling with custom theme tokens |
| Vite | latest | Build tool and dev server |
| lucide-react | 0.522.0 | Icon library (nav bar + jump scare icons) |
main.css:
- Bagel Fat One — display / heading font
- DM Sans — body copy font
File Structure
pages/ directory contains static pre-rendered HTML shells for each route. These allow direct URL access (e.g. navigating straight to /about) without requiring client-side JavaScript to bootstrap the route first. Once React hydrates, the full SPA takes over.
Routing
React Router v6 is set up with aBrowserRouter wrapping a Routes tree in assets/main.js. All routes are rendered inside the Layout component, which supplies the fog, custom cursor, jump-scare controller, and nav bar to every page. Unrecognised paths fall through to a wildcard * route that renders HomePage directly.
| Path | Component | Spooky Name |
|---|---|---|
/ | HomePage | — (no nav label) |
/about | AboutPage | Lurking Around |
/projects | ProjectsPage | Skeletons |
/skills | SkillsPage | Tricks |
/work | WorkPage | Haunts |
/case-studies | CaseStudiesPage | Crypt Notes |
/blog | BlogPage | Bump in the Blog |
/testimonials | TestimonialsPage | They Survived |
/contact | ContactPage | Boo at Me |
* | HomePage | Renders HomePage (no redirect) |
Layout Wrapper
components/Layout.js is the root wrapper rendered around every route. It composes four ambient components and the top navigation bar into a single <div> that forms the persistent shell of the app:
FogBackground, CustomCursor, and JumpScareController are always mounted regardless of the current route. The nav bar is conditionally hidden on the home route (/) — detected via useLocation().pathname. All page content is wrapped in a Framer Motion motion.main element keyed to the current pathname, enabling route-level page transitions.
Page Transitions
Framer Motion’sAnimatePresence component manages the mount/unmount lifecycle of each page. The motion.main wrapper uses the pathname as its key so that React treats each route change as a full unmount and remount, triggering both exit and initial animations.
The transition values extracted from Layout.js:
Ambient Components
Deep-dive into FogBackground, CustomCursor, and JumpScareController — how each works and how they’re composed inside Layout.
Theming
Explore the custom Tailwind theme tokens —
spooky-midnight, spooky-turquoise, spooky-cream — and the Google Fonts setup.