Groovy Portfolio is a personal portfolio website for fictional frontend developer Alex Groovy, built entirely in React with a bold, unabashed 1970s aesthetic. Every element — from the rainbow cursor trail that follows your mouse to the tie-dye background pulsing behind the content — is crafted to evoke the psychedelic spirit of the decade. It is a single-page application that bundles nine distinct pages under one roof, each celebrating a different piece of retro visual culture while still serving the practical goal of showcasing a developer’s work, skills, and personality.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/groovy/llms.txt
Use this file to discover all available pages before exploring further.
Groovy Portfolio is a fully static site. There is no backend, no API, and no server required. Every page is pre-rendered HTML driven by client-side React — making it trivial to host anywhere that can serve static files.
The Nine Pages
Groovy Portfolio is organised into nine themed pages, each with its own visual motif drawn from 1970s pop culture and design.| Page | Motif | Purpose |
|---|---|---|
| Home | Hero splash with SmileySun and TieDyeBackground | First impression — name, tagline, and animated call-to-action |
| About | Animated LavaLamp column | Biography, personality, and a lava-lamp that actually bubbles |
| Projects | VinylRecord cards | Portfolio pieces presented as spinning vinyl records with colour-coded labels |
| Skills | RainbowArc radial chart | Technical competencies rendered as a rising arc of rainbow bands |
| Work | PeaceTimeline | Career history laid out as a peace-sign-styled vertical timeline |
| Case Studies | WallPoster grid | Deep-dive write-ups styled as vintage concert wall posters |
| Blog | RecordCrate flip cards | Articles flipping out of a browsable record crate |
| Testimonials | GroovyBubble speech bubbles | Quotes from colleagues and clients in retro speech-bubble callouts |
| Contact | DaisyForm | Contact form whose fields are shaped and coloured like daisy petals |
Tech Stack
Groovy Portfolio is assembled from a carefully chosen set of modern frontend tools that collectively keep the bundle lean while enabling rich, fluid animations and a delightful developer experience.- React 18 — component model, hooks, and concurrent rendering for smooth animated transitions.
- Vite — the build tool used to compile the original source into the pre-built static output you find in this repository. All compiled assets land in
assets/rather than adist/folder. - Framer Motion — declarative animation library powering every page transition, the lava-lamp bubbles, spinning vinyl records, and the rainbow cursor trail. All
motion.*primitives are re-exported throughassets/proxy.js, andAnimatePresenceis re-exported throughassets/index.js, so they remain available across the bundled output. - React Router v6 with
HashRouter— client-side routing with hash-based URLs (e.g./#/about) that work on any static host without server configuration. - Tailwind CSS — utility-first styling compiled into
assets/main.cssas part of the Vite build. The colour tokens used throughout the site are baked into the compiled output.
Architecture
Groovy Portfolio follows a straightforward single-page application pattern. All route definitions and page-level components live together inassets/main.js, which is the compiled output that React hydrates when index.html loads. The component hierarchy looks like this:
Layout.js is the single wrapper that every page inherits. It mounts RainbowCursor and Navbar, then wraps the router <Outlet> in Framer Motion’s AnimatePresence (via assets/index.js) and a motion.main element (via assets/proxy.js) so pages animate in and out smoothly. The page transition values are: initial: { opacity: 0, scale: 0.95, filter: 'blur(10px)' }, animate: { opacity: 1, scale: 1, filter: 'blur(0px)' }, exit: { opacity: 0, scale: 1.05, filter: 'blur(10px)' }, with a duration: 0.5, ease: 'easeInOut' transition.
Why HashRouter?
React Router’s HashRouter encodes the current route in the URL hash (/#/projects) rather than the URL path (/projects). This means the web server only ever serves index.html — it never needs to know about individual routes. On static hosts like GitHub Pages, Netlify (without redirect rules), or a plain CDN, HashRouter works out of the box without any server configuration, making it the perfect choice for a fully static portfolio.
Design Tokens
The colour palette is baked into the compiled CSS (assets/main.css) as part of the Vite build. The five core tokens used throughout every component are documented below for reference when editing the compiled files.
| Token | Hex | Usage |
|---|---|---|
groovy-magenta | #d946ef | Primary accent — buttons, active nav items, highlights |
teal | #2dd4bf | Secondary accent — borders, skill arcs, hover states |
groovy-yellow | #fde047 | Tertiary accent — vinyl labels, timeline dots, form petals |
groovy-violet | #8b5cf6 | Quaternary accent — poster headers, bubble tails, tags |
cream | #fefce8 | Background base — warm off-white body colour |
Explore Further
Ready to dive in? The cards below link to the most useful next steps — whether you want to get the project running locally, understand individual pages in depth, browse the component library, or explore the full theme system.Getting Started
Serve the pre-built static site locally and deploy it to Netlify, GitHub Pages, or Vercel in minutes.
Home Page
Explore the hero splash, SmileySun animation, and tie-dye background that greet every visitor.
Component Overview
A catalogue of every custom component — LavaLamp, VinylRecord, RainbowCursor, and more.
Design & Theme
Deep-dive into the 1970s colour palette, typography choices, and compiled Tailwind token system.