The home page is the first impression Telemetry makes on every visitor. It combines a layered orbital animation, a character-by-character typewriter greeting, a large glitching name display, a telemetry status bar, and a horizontal-scroll preview of your recent projects — all built with Framer Motion and Tailwind CSS.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/telemetry/llms.txt
Use this file to discover all available pages before exploring further.
Route
The home page renders at the root hash route#/ (React Router v6 index route under path /).
Hero Section
The top section fills100vh and centers all content both vertically and horizontally.
Orbital Rings Animation
Three concentric animated rings surround a glowing center node:| Ring | Class offset | Direction | Duration |
|---|---|---|---|
| Outer | inset-0 | Clockwise (rotate: 360) | 20 s |
| Middle | inset-4 | Counter-clockwise (rotate: -360) | 15 s |
| Inner | inset-12 | Static backdrop — pulsing radial gradient | 5 s (bg cycle) |
motion.div with animate and transition: { repeat: Infinity, ease: "linear" }. The inner node contains a radial-gradient that continuously transitions between aurora-teal and aurora-violet hues.
Typewriter Component
TheTypewriter component renders text one character at a time and is reusable across any page:
- A
setTimeoutfires afterdelayms, then asetIntervalappends one character every 50 ms. - The blinking cursor is a
motion.spanwithanimate={{ opacity: [1, 0] }}toggling at0.8 sintervals on an infinite repeat. - The cursor is styled
w-2 h-[1em] bg-aurora-cyanand sitsalign-middleafter the typed text.
Name Display
The largeh1 below the typewriter line displays the portfolio owner’s name in two parts:
Open the Home page component
Locate the Home page component function. Find the
h1 element near the Typewriter usage.Replace the ALEX text node
Change
"ALEX" to your preferred first name or handle. The glitch animation targets this motion.span.h1 ("Currently Debugging Reality…") fades in at a 2.5 s delay via initial={{ opacity: 0 }} / animate={{ opacity: 1 }}.
Status Bar
A full-widthmotion.div strip sits below the hero, entering with a whileInView slide-up animation (y: 20 → 0). It displays four metrics in font-mono text-xs using Lucide React icons:
UPTIME
Terminal icon (teal) — UPTIME: 99.9%COMMITS_THIS_WEEK
GitCommitHorizontal icon (violet) — COMMITS_THIS_WEEK: 42READING
BookOpen icon (cyan) — READING: "Three-Body Problem"SYSTEMS NOMINAL
Pulsing orange dot (animated
animate-ping) — SYSTEMS NOMINALCustomizing Status Bar Items
Each metric is a hardcoded string inside the Home page component. Find them by their icon or label:COMMITS_THIS_WEEK from the GitHub API at build time, or swap READING for a currently-playing track from Spotify.
Recent Missions Section
Below the status bar, the page continues tomin-h-[200vh] and mounts a “Recent Missions” section at mt-32. It enters via whileInView animation as the user scrolls down.
Section Heading
"Recent Missions" with a decorative w-8 h-[1px] bg-aurora-teal rule preceding the text.View All Link
A
NavLink to /projects with label "VIEW ALL LOGS →". Clicking it navigates to the full Projects page.snap-x snap-mandatory flex container with hide-scrollbar. Each placeholder card shows:
- Mission number —
MISSION 001,MISSION 002, etc. (font-mono, aurora-violet) - Title —
"Project Nebula 1"etc. (hover turns aurora-cyan) - Description — placeholder body text
- Tech tags —
React,TypeScriptpill badges
The four placeholder project cards (
[1, 2, 3, 4].map(...)) are static. To show real projects here, replace the .map array with your own project data objects and render their actual fields. The full project list lives in the projects data array defined in the Projects page component.Scroll Parallax
The home page uses Framer Motion’suseScroll hook to track scrollYProgress (0 → 1 as the user scrolls from top to bottom of the 200vh page). A useTransform call maps that range to a background-position shift of "0%" → "50%" for a subtle parallax effect on the aurora background layer.
AuroraBackground component reads this value to shift its gradient layer as you scroll.