Job Title: Senior Java Developer/ Senior JavaScript Front-End Developer
Location: Remote
Duration: 6 Month’s Contract
Job Description:
Deep, senior-level React (React 19 / modern React): the render model, hooks discipline, memoization, effect timing, and a real feel for where re-renders and stale closures come from — which matter acutely in an app running a physics loop every frame.
Three.js and React Three Fiber in production. Real command of the scene graph, geometry and materials, the useFrame render loop, and disposal / memory management (WebGL leaks are a real hazard). This is the heart of the role and the skill we weight most heavily — React experience without R3F is not a substitute.
Real-time performance discipline. You think in frame budgets, know what drives GPU vs CPU cost, can profile a render loop, and habitually design for the weakest target device.
State management at scale with Zustand (or clearly transferable experience), keeping a growing state model coherent rather than tangled.
Accessibility as a first-class skill — keyboard navigation, focus management, ARIA, WCAG AA, screen-reader testing. For an education product this is a core requirement and a procurement gate, not an afterthought.
TypeScript, testing, and modern tooling — TypeScript fluency, Vite, a real testing discipline (we favor testing real behavior over mocks), and the judgment to set the quality bar for others.
Responsibilities:
Build and own complex React Three Fiber features: interactive 3D equipment, a selection-driven action system, real-time visual effects, and the UI around them.
Keep the app fast on low-end hardware — profile and tune the render loop, manage GPU/CPU cost, and hold a frame budget on Chromebook-class devices.
Keep application state coherent as it grows (simulation state, equipment state, an event log used for assessment, and UI state) using Zustand.
Make accessibility real: full keyboard operation, focus management, ARIA, and screen-reader support are core requirements here, not polish.
Direct Claude Code effectively — decompose work into well-specified, agent-sized tasks, review the output with a senior eye, and know when to write something by hand instead.
Help maintain the conventions, CLAUDE.md guidance, and repo structure that keep AI-generated code consistent and safe.
Collaborate with our 3D technical artist to integrate assets and shaders cleanly.