The Projects page reimagines a traditional portfolio grid as a living solar system. A white glowing “sun” anchors the centre of the viewport; three project payloads orbit it at different radii and speeds using Framer Motion’sDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/cosmic-developer/llms.txt
Use this file to discover all available pages before exploring further.
animate rotation. Each payload is a hoverable circle. Moving the cursor over a project opens a telemetry panel — a glass-morphism card that slides in with the project name, description, tech stack tags, and action buttons.
Visual Overview
| Element | Description |
|---|---|
| Central star | White bg-star-white circle with a pulsing box-shadow glow |
| Orbit paths | Three circular <div> rings at diameters 250 px, 380 px, and 500 px |
| Project nodes | Gradient circles travelling along each orbit via Framer Motion rotate |
| Telemetry panel | Conditionally rendered glass-panel card shown on hover |
| TeletypeText | "Tracking active payloads in sector..." — page-level intro line |
Project Payloads Data
The three projects are defined in thept array inside the gt component:
Project Properties Reference
| Property | Type | Description |
|---|---|---|
id | number | Unique identifier; used as the React key and to track the active project in state |
name | string | Displayed in the telemetry panel heading |
desc | string | Short description shown in the telemetry panel body |
tech | string[] | Tech tags rendered as pill badges in the telemetry panel |
color | string | Tailwind gradient classes applied to the project node circle |
orbitSize | number (px) | Diameter of the orbit ring in pixels; larger = further from the sun |
speed | number (s) | Duration of one full orbit in seconds; larger = slower revolution |
Orbital Animation
Each project node is placed at the top of its orbit ring using absolute positioning, and the ring wrapper rotates continuously via Framer Motion:Telemetry Panel
Hovering a project node setsactiveProject in component state (onMouseEnter / onMouseLeave). The telemetry panel is rendered conditionally at the bottom-right of the viewport:
onMouseLeave) clears activeProject and restores the placeholder.
TeletypeText Configuration
Customization
- Add a project — Append a new object to the
projectsarray. Choose anorbitSizelarger than 500 (e.g.,620) and a proportionally slowerspeed(e.g.,65). The orbit ring and node will render automatically. - Remove a project — Delete its entry from
projects. The remaining orbits stay at their configured radii; no layout code needs changing. - Edit project descriptions — Update the
descstring for each project. Keep descriptions concise (1–2 sentences) so the telemetry panel does not overflow on small viewports. - Update tech tags — Modify the
techarray for each project. There is no hard limit on tag count, but 3–5 tags keeps the panel tidy. - Change orbit spacing — Adjust
orbitSizevalues. A minimum gap of ~100 px between diameters prevents visual crowding. - Change orbit speed — Adjust
speedvalues. Lower = faster revolution. The current20s → 35s → 50sprogression gives a natural feel where outer orbits move more slowly. - Change the gradient — Update the
colorstring with any two Tailwind gradient color stops to restyle a project node.
The orbit rings are plain
<div> elements with border and matching width/height values — not SVG. If you change an orbitSize, only the single style object on that ring’s wrapper div needs updating; there are no separate SVG elements to keep in sync.