The Home page (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/space-mission/llms.txt
Use this file to discover all available pages before exploring further.
/) is the primary entry point of the Space Mission portfolio. It renders two stacked sections inside a single viewport: an interactive OrbitSystem SVG diagram in the upper half, and a HUD-styled Mission Briefing panel below it. The animated Starfield backdrop — complete with parallax stars and shooting-star comets — covers the entire screen as a fixed z-0 layer behind all content. Both sections enter the view with a Framer Motion whileInView fade-in/slide-up animation (initial={{ opacity: 0, y: 50 }}).
OrbitSystem Component
TheOrbitSystem component (components/OrbitSystem.js) renders a 600px-tall perspective container centered on the page. At its core sits a glowing SYS_CORE star — a w-32 h-32 circle with a from-yellow-200 via-orange-400 to-red-600 radial gradient and a pulsing box-shadow animation (0 0 60px → 80px → 60px, repeating every 4 seconds).
Five navigation planets orbit the star on independently animated elliptical paths. Each planet is a Framer Motion div that continuously rotates (animate={{ rotate: 360 }}), with a counter-rotation applied to the planet element itself so the label always stays upright. Hovering any planet scales it to 1.5× and reveals a hud-border tooltip with the page label.
| Planet Label | Route | Color Class | Orbit RadiusX | Orbit RadiusY | Period |
|---|---|---|---|---|---|
| ORIGIN | /about | bg-orange-400 | 120px | 60px | 20s |
| MAP | /projects | bg-space-turquoise | 180px | 90px | 35s |
| SKILLS | /skills | bg-space-teal | 240px | 120px | 45s |
| LOGS | /work | bg-indigo-400 | 320px | 160px | 60s |
| COMMS | /contact | bg-rose-400 | 400px | 200px | 80s |
useNavigate hook to navigate to the corresponding route immediately.
Mission Briefing Panel
Below the orbit diagram, amax-w-3xl Mission Briefing panel slides into view using whileInView. The panel uses the .hud-border utility class — a Tailwind component that applies a 1px cyan-tinted border (border-space-turquoise/30), a bg-space-navy/80 background, a subtle cyan glow (box-shadow: 0 0 15px rgba(34,211,238,.1)), and backdrop-blur-md.
The panel’s header row contains a circular CMD badge and two lines of mono text:
- MISSION BRIEFING — displayed in
text-space-turquoise tracking-widest - STARDATE: — auto-generated from
new Date().toISOString().split('T')[0]at render time, so it always shows the current UTC date.
border-t/border-l and two border-b/border-r in border-space-turquoise) frame the panel to create an HUD appearance.
Typewriter Text Effect (TypingText)
All four lines of briefing text are rendered through the TypingText component (aliased as q in the bundle). It accepts a text string and a delay milliseconds value. After the delay, it types the string character-by-character at 30ms per character using setInterval. A blinking block cursor (w-2 h-4 bg-space-turquoise animate-pulse) is appended after the current text.
Mission Briefing Lines
The four lines displayed, with their staggered start delays:| Delay | Text |
|---|---|
| 500ms | > INITIALIZING TELEMETRY... SUCCESS. |
| 1500ms | > SUBJECT: Senior Software Engineer / Navigator of Code. |
| 3000ms | > STATUS: All systems nominal. Caffeine levels stable. Currently orbiting the React/TypeScript sector with occasional deep-space probes into backend nebulae. |
| 7000ms | > DIRECTIVE: Explore the star map above to access mission logs, orbital parameters, and archived transmissions. |
The
TypingText component cleans up both its setTimeout and setInterval references on unmount, so navigating away and returning will restart the animation from scratch.Customization
Edit the mission briefing text
Open
assets/main.js (or your pre-bundle source). Locate the four TypingText usages inside the MISSION BRIEFING panel. Replace the text prop value with your own copy. Keep the > prefix to preserve the terminal aesthetic.Adjust typewriter delays
Change the
delay prop on any TypingText instance. All values are in milliseconds. The four default values are 500, 1500, 3000, and 7000. Increasing the gap between lines gives the text more dramatic pacing; decreasing it makes the intro faster.Change the typing speed
The
setInterval callback inside TypingText fires every 30ms. Lower this number (e.g., 15) for faster typing; raise it (e.g., 60) for a slower, more deliberate effect.