James's repositories
risk-leaderboard
View and search the Risk leaderboard (updates hourly).
web-template
Opinionated template for building modern and scalable web projects.
jfscraig.me
My personal website.
image-utils
Utilities for common image needs.
2d-scroller
Basic 2D scroller game
torrent-streaming
Watch video torrents online. Streams them directly to your browser.
office-game
Multiplayer game concept to play around with colleagues.
react-xr-ui
Build UIs with React that work in VR, AR and web contexts.
specsavers-scorm-package
SCORM Package for Specsavers employees.
next-app-router-revalidation-issue
Minimal reproduction, showing Next.js not respecting revalidate and dynamic settings.
movie-server
Watch movies in your browser.
next-load-error-repro
Reproduction of "Unhandled Runtime Error" Next.js issue.
koestlich
user interfaces for three.js
koestlich-test
Playing around with and assessing @coconut-xr/koestlich as an alternative replacement to my own react-xr-ui package.
react-xr-ui-improved
Improving and testing features before pushing to react-xr-ui
bun-test
Playing around with Bun 1.0: React SSR, Styled Components, and React Router DOM.
react-dragged
Small React drag and sort component
ai-translate
Translate English text into different languages.
three-mesh-ui
⏹ Make VR user interfaces for Three.js
risk-competitive-tools
Node.js and Chrome app that opens when a screenshot is taken to draw on.
royal-game-of-ur
A digital implementation of the ancient Royal Game of Ur.
cms
Generate a full CMS from a simple schema.
Minecraft-Server
Spigot server with Bukkit plugins and scriptcraft for writing plugins in JavaScript.
three-shader-experiments
Experimenting with shaders in Three.js
NimPlant
A light-weight first-stage C2 implant written in Nim.
osmicsx
An utility style framework for React Native
use-model-validation
Store data in a model and validate that data anywhere.
three-spritetext
A sprite based text component for ThreeJS
gamepad-example
Example game using the Gamepad API
use-form-validator
Hook for form validation in React