The Case Studies page — labelledDocumentation 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.
ARCHIVE in the app’s HUD vocabulary — presents a grid of classified mission dossiers, each representing a real-world engineering engagement. Visitors can scan high-level outcome metrics on the archive cards and then drill into a full-page mission report for deeper technical context. Every card is styled with the project’s signature HUD border treatment, reinforcing the classified-ops aesthetic throughout.
Page Layout
The archive renders as a responsive grid of mission-report cards. Each card is framed by a glowing HUD border (a thin cyan outline with corner bracket accents) that ties it visually to the rest of the portfolio’s interface language. Clicking any card navigates to the detail route/case-studies/:slug, where :slug corresponds to the case study’s id field.
The router uses React Router’s hash-based strategy. The static entry point
pages/CaseStudies.html sets window.__STATIC_PAGE_ROUTE__ = "/case-studies" so the SPA can hydrate correctly on direct load.Card Anatomy
Each mission-report card surfaces the following fields at a glance:| Element | Description |
|---|---|
| CODENAME | All-caps mission title rendered as the card’s primary heading |
| Client | Organisation name displayed beneath the codename |
| STATUS badge | Colour-coded pill: green for SUCCESS, blue for COMPLETED, yellow for IN_PROGRESS |
| Sector tag | Domain label (e.g. “Frontend Architecture”) shown as a small inline tag |
| Summary | One-to-two sentence plain-English description of the engagement |
| Outcome metric | Concise quantified result (e.g. “Load time reduced by 60%“) |
| Tags | Horizontal row of technology pills at the card footer |
Current Case Studies
The following three missions are defined in the data array at the top of theCaseStudies page component:
| # | Codename | Client | Status | Sector | Outcome |
|---|---|---|---|---|---|
| 1 | OPERATION NEBULA | Stellar Tech | SUCCESS | Frontend Architecture | Load time reduced by 60%, 12k lines removed |
| 2 | DEEP SPACE RELAY | Nebula Systems | SUCCESS | Full-Stack Migration | API response improved 45%, deployed 8 microservices |
| 3 | PROJECT QUASAR | Orbit Media | COMPLETED | Data Visualization | 50M+ events visualized in real-time |
OPERATION NEBULA
Stellar Tech · Frontend ArchitectureRebuilt a legacy dashboard from scratch using React and TypeScript, reducing load time by 60% and eliminating 12k lines of jQuery.
React TypeScript PerformanceDEEP SPACE RELAY
Nebula Systems · Full-Stack MigrationLed the migration of a monolithic PHP application to a Node.js microservices architecture, improving API response times by 45%.
Node.js PostgreSQL MicroservicesPROJECT QUASAR
Orbit Media · Data VisualizationDesigned and built an interactive real-time analytics dashboard visualizing 50M+ daily events using D3.js and WebSockets.
D3.js WebSockets ReactDetail Page (/case-studies/:slug)
Navigating to a case study card opens the full mission dossier at /case-studies/:slug. The detail page is rendered from the same data array — it looks up the entry whose id matches the slug extracted via React Router’s useParams. The detail view includes:
- The full CODENAME as the hero heading
- Client, status badge, and sector tag in a metadata row
- Full summary paragraph
- Highlighted outcome metric in a call-out block
- Complete tags list
- A ← BACK TO ARCHIVE button that calls
navigate(-1)to return to the grid
If an unknown slug is provided (i.e., no matching
id in the array), the detail page renders a “MISSION NOT FOUND” fallback state rather than crashing.Data Shape
Each case study object conforms to the following TypeScript interface, defined inline within the page component file:Adding a New Case Study
Adding a mission to the archive requires only one step: append a new object to thecaseStudies array.