Skip to main content

Documentation Index

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

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

Observatory is a fully client-side React single-page application designed as a personal portfolio template for senior systems engineers. Every element of the UI — from the animated starfield background to the aurora gradient ribbon — is built around a consistent deep-space aesthetic. Rather than a generic portfolio, Observatory gives you a thematic system: nine distinct pages, each translated into a unique astronomy metaphor, powered by a custom component library called Aurora.
Observatory has no backend. All personal data — project entries, work history, skills, testimonials, articles — is hardcoded directly in the Aurora component source files. There is no CMS, no database, and no API.

Tech Stack

Observatory is assembled from a focused set of modern frontend tools. Each was chosen for a specific purpose.
LayerTechnologyRole
FrameworkReact 18Component rendering and state
Build toolViteDev server and production bundler
RoutingReact Router v6Client-side SPA routing with nested routes
AnimationFramer MotionPage transitions, entrance animations, layout IDs
StylingTailwind CSSUtility-first CSS, custom color tokens
IconsLucide ReactConsistent icon set (Menu, X, ArrowRight, etc.)
Framer Motion is aliased internally as proxy.js — throughout the codebase you’ll see import { m as motion } from "../../assets/proxy.js". All animated components use motion.div, motion.span, etc., via this alias.

The Aurora Component System

All custom UI lives under components/aurora/. This directory is the entire design system. Each file corresponds to either a layout primitive or a full page section. There are no external UI libraries; every interactive element — the radio dial, the orbital path timeline, the constellation project map — is purpose-built. Components in Aurora break into two categories: Layout & ambient effects — wrappers and background elements used on every page:
  • Layout.js — root page layout shell, renders Navigation, CursorTrail, PageTransition, and the content outlet
  • Navigation.js — fixed top navigation bar with scroll-aware opacity and Framer Motion spring indicator
  • Starfield.js — canvas-based animated star field rendered behind page content
  • AuroraRibbon.js — the sweeping gradient ribbon visible on the home page
  • CursorTrail.js — mouse-follow particle trail effect
  • PageTransition.js — fade/slide transitions between routes
Page section components — the main content components, one per thematic page section:
  • ConstellationLayout.js — interactive SVG constellation map for Projects
  • SpectrumAnalyzer.js — animated frequency bars for Skills
  • OrbitalPath.js — horizontal timeline for Work history
  • RadioDial.js — interactive radio tuner for Contact
  • CaseStudyReader.js — long-form article reader for Case Studies
  • StarMapIndex.js — grid index of articles for the Notebook
  • PolaroidTestimonials.js — polaroid-style testimonial cards

Space Metaphor System

Every page in Observatory has been renamed to fit the astronomy theme. The metaphor runs consistently from the URL labels shown in the navigation bar down to the page heading copy.
RouteNav LabelAstronomy MetaphorComponent
/Tonight’s ForecastHome / hero(inline in main.js)
/aboutThe ObserverEngineer biography(inline in main.js)
/projectsLogged SightingsProjects as a constellation mapConstellationLayout
/skillsInstrumentsSkills as a spectrum analyzerSpectrumAnalyzer
/workExpeditionsWork history as orbital pathOrbitalPath
/case-studiesField ReportsCase studies as long-exposure logsCaseStudyReader
/articlesNotebookArticles as stellar cartography indexStarMapIndex
/testimonialsPeer ReportsTestimonials as peer telemetryPolaroidTestimonials
/contactSend a SignalContact as a radio transmission dialRadioDial

The Nine Pages

Tonight's Forecast

The hero page. Features the animated Starfield, AuroraRibbon gradient, and a large typographic headline: “Building systems at high altitude.”

The Observer

Engineer biography. Splits into a two-column grid — an animated geometric avatar panel on the left, long-form bio text on the right.

Logged Sightings

Projects mapped as an interactive SVG constellation. Hover over a star node to reveal project telemetry data. Lines connect projects that share architectural patterns.

Instruments

Skills rendered as an animated spectrum analyzer with frequency bars per domain — proficiency expressed as signal strength.

Expeditions

Work history laid out as a horizontal orbital path. Select a coordinate to expand mission logs and responsibilities.

Field Reports

Case studies in a long-exposure reader format — extended technical write-ups with a “content develops slowly” visual metaphor.

Notebook

Articles indexed as stellar cartography — a grid of entries mapped by topic and magnitude via StarMapIndex.

Peer Reports

Colleague testimonials displayed as polaroid photograph cards with slight rotation, via PolaroidTestimonials.

Send a Signal

Contact page built around an interactive RadioDial component. The engineer is described as “listening on all frequencies” with a “response time of typically 1 Earth rotation.”

Color Palette

The Observatory color system is defined as custom Tailwind tokens. Every shade maps directly to a specific CSS color value found in assets/main.css:
TokenHexUsage
aurora-turquoise#2dd4bfPrimary accent — active nav indicator, CTA borders, glow effects
aurora-teal#14b8a6Section labels, icon accents, gradient start
aurora-seafoam#5eead4Hover text states, gradient end, text selection highlight
aurora-violet#8b5cf6Gradient accents, AuroraRibbon start color
aurora-magenta#d946efGradient accents, AuroraRibbon end color
space-900#03050dDeepest background, mobile nav overlay
space-800#050816Default <body> background, card surfaces
space-700#0a1029Border accents, gradient stops, section dividers
Text selection across the entire site uses background-color: #14b8a64d (aurora-teal at 30% opacity) with color: #5eead4 (aurora-seafoam), set globally in main.css.

Typography

Observatory imports three typefaces from Google Fonts, each assigned a semantic role:
@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600
  &family=JetBrains+Mono:wght@400;500
  &family=Space+Grotesk:wght@300;400;500;600;700
  &display=swap";
FamilyTailwind ClassRole
Space Groteskfont-displayHeadings, logotype, page titles
JetBrains Monofont-monoNav labels, section tags, code, UI metadata
Interfont-sansBody copy, descriptions, paragraph text

Animated Effects

Four ambient effects layer on top of all page content. They are always present and managed by the Layout component: Starfield (Starfield.js) — A canvas element renders animated star particles that drift slowly across the deep-space background. It sits behind all content at z-index: 0. AuroraRibbon (AuroraRibbon.js) — A large animated gradient element (violet → magenta) composited with mix-blend-mode: screen to produce the aurora glow on the home page. Uses Framer Motion for looping gradient animation. CursorTrail (CursorTrail.js) — Tracks mousemove events and spawns small glowing particles that fade out behind the cursor. Adds tactile feedback to mouse interaction. PageTransition (PageTransition.js) — Wraps each routed page in a Framer Motion AnimatePresence sequence. Handles fade-in on mount and fade-out on unmount when navigating between routes.

Build docs developers (and LLMs) love