Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/developer-exe/llms.txt
Use this file to discover all available pages before exploring further.
HUD is the persistent heads-up display that frames every page of developer.exe as though it were a level inside an arcade game. It fixes itself to the top of the viewport in a three-column layout and updates in real time: the centre column reflects the active React Router route as a game-level name, while the right column ticks a live 24-hour clock every second. Because the overlay uses pointer-events-none, it sits visually above page content without ever blocking clicks or keyboard focus.
Props
HUD accepts no props. It sources all its display data internally:
- Route name — read from React Router’s
useLocation()hook; no prop needed. - Score — computed from
new Date()at render time:year × 100 + month. - Clock — managed with a
useState/setIntervalpair that fires every 1 000 ms, cleaned up on unmount.
Usage
PlaceHUD once at the application root, inside a React Router <Router> context so the useLocation() hook has access to the routing tree:
HUD layout
The bar is divided into three flex columns: Left column — player statusPLAYER 1: READY— static player identifier in neon-green.SCORE: [value]— rendered in neon-cyan. The score isDate.getFullYear() * 100 + Date.getMonth(), producing a four-to-six digit number that changes once per calendar month.
LEVEL: [ROUTE NAME]— rendered in neon-magenta with a Tailwindanimate-pulseclass for a slow brightness pulse. The route pathname is mapped to a human-readable level name (see table below).
VIBES: 60FPS— static performance display in neon-green.- Live time — rendered in neon-yellow, updated every second via
toLocaleTimeString("en-US", { hour12: false }).
Route-to-level mapping
| Route | HUD display |
|---|---|
/ | ATTRACT MODE |
/about | ABOUT |
/projects | PROJECTS |
/skills | SKILLS |
/writing | WRITING |
/case-studies | CASE STUDIES |
/contact | CONTACT |
pathname.substring(1).toUpperCase() and replacing hyphens with spaces. The root path / is the only special case, returning the string "ATTRACT MODE".
CSS classes
| Class / property | Effect |
|---|---|
fixed top-0 | Locks the bar to the top of the viewport on all scroll positions |
z-40 | Renders above page content but below the CRT overlay layers (z-50, z-51) |
pointer-events-none | Passes all mouse and touch events through to the content beneath |
font-hud | Custom bitmap/monospace font from the design system |
text-neon-green | Default text colour for the bar |
initial={{ y: -50 }} → animate={{ y: 0 }}), so it drops in smoothly on first load.
HUD uses pointer-events-none on its root element so it never intercepts clicks, taps, or keyboard navigation targeted at page content rendered beneath it. If you add interactive elements inside HUD in a fork, you will need to re-enable pointer events on those specific children with pointer-events-auto.