{"version":"1.0","profile":{"name":"Tom Fletcher","alias":"rgbjoy","url":"https://rgbjoy.com","description":"Tom Fletcher is a fullstack engineer who architects and designs for the web — client sites, product systems, and shader experiments. Available for new work.","profiles":[{"name":"GitHub","url":"https://github.com/rgbjoy/"},{"name":"Instagram","url":"https://www.instagram.com/rgbjoy/"},{"name":"X","url":"https://x.com/rgbjoy"},{"name":"LinkedIn","url":"https://www.linkedin.com/in/rgbjoy/"}]},"source":"https://rgbjoy.com/directory","total":31,"entries":[{"id":"project:golfisweird.com","kind":"project","title":"golfisweird.com","url":"https://golfisweird.com","year":"2026","description":"Something weird for golf, in the works. All it takes is one good look.","technologies":[],"keywords":[]},{"id":"project:futurebyday.com","kind":"project","title":"futurebyday.com","url":"https://futurebyday.com","year":"2026","description":"An interactive savings calculator for exploring how daily contributions could grow over time, comparing risk levels, and planning toward a savings goal.","technologies":["vinext","React","StyleX"],"keywords":[]},{"id":"project:scriptlet.app","kind":"project","title":"scriptlet.app","url":"https://scriptlet.app","year":"2026","description":"A native Mac app for running, watching, and stopping package.json scripts while coding agents work.","technologies":[],"keywords":[]},{"id":"project:tenniswoodsmiles.com","kind":"project","title":"tenniswoodsmiles.com","url":"https://tenniswoodsmiles.com","year":"2026","description":"A patient-focused site for a multigenerational dental practice, built with Payload CMS and Next.js.","technologies":["Next.js","Payload CMS"],"keywords":[]},{"id":"project:veronightout.com","kind":"project","title":"veronightout.com","url":"https://veronightout.com","year":"2026","description":"A curated guide to the best bars, restaurants, and local hangouts in Vero Beach, with clear vibes for every spot.","technologies":[],"keywords":[]},{"id":"project:checkcheck.app","kind":"project","title":"checkcheck.app","url":"https://checkcheck.app","year":"2026","description":"A minimalist checklist app that lets you easily create tasks, sort, and use keyboard shortcuts.","technologies":[],"keywords":[]},{"id":"project:valeriechiang.com","kind":"project","title":"valeriechiang.com","url":"https://valeriechiang.com","year":"2025","description":"A portfolio site for a New York City photographer and filmmaker, built with Payload CMS.","technologies":["Payload CMS"],"keywords":[]},{"id":"project:thenewrepublic.com","kind":"project","title":"thenewrepublic.com","url":"https://thenewrepublic.com","year":"Ongoing","description":"Reader-facing features and custom editorial CMS tooling for the magazine, built and shipped front to back.","technologies":[],"keywords":[]},{"id":"project:oib.beer","kind":"project","title":"oib.beer","url":"https://oib.beer","year":"2025","description":null,"technologies":[],"keywords":[]},{"id":"experiment:aurora","kind":"experiment","title":"Aurora","url":"https://rgbjoy.com/experiments/aurora","description":"Raymarched aurora curtains after kishimisu — spectral ribbons that drift and fold in deep space.","category":"Generative & Visual","publishedMonth":"2026-07","status":"live","technologies":["Three.js","R3F","GLSL","lil-gui"],"keywords":["aurora","raymarch","kishimisu","shader","space","spectral"]},{"id":"experiment:gradient","kind":"experiment","title":"Background Gradient","url":"https://rgbjoy.com/experiments/gradient","description":"Shader-led gradient exploration.","category":"Generative & Visual","publishedMonth":"2026-03","status":"live","technologies":["Three.js","R3F","GLSL"],"keywords":["gradient","background","color","shader"]},{"id":"experiment:frog-hop","kind":"experiment","title":"Frog Ace","url":"https://rgbjoy.com/experiments/frog-hop","description":"Read the wind, pull back, and spring a tiny frog across a branching lily-pad course.","category":"Play","publishedMonth":"2026-08","status":"wip","technologies":["Three.js","R3F","GLSL","FBX"],"keywords":["frog","game","lily pad","three","aim","jump","wind","golf"]},{"id":"experiment:decal-pole","kind":"experiment","title":"Decal Pole","url":"https://rgbjoy.com/experiments/decal-pole","description":"Staple images to a telephone pole — drop one anywhere and it sticks where it lands, a few degrees off true.","category":"Play","publishedMonth":"2026-09","status":"live","technologies":["Three.js","R3F","drei"],"keywords":["decal","pole","flyer","poster","drag and drop","raycast","projection","telephone pole"]},{"id":"experiment:island-generator","kind":"experiment","title":"Island Generator","url":"https://rgbjoy.com/experiments/island-generator","description":"Shape a low-poly island with seeded noise, elevation bands, and live terrain controls.","category":"Play","publishedMonth":"2026-09","status":"wip","technologies":["Three.js","R3F","WebGL"],"keywords":["island","terrain","generator","noise","seed","procedural","low poly"]},{"id":"experiment:glass-grid","kind":"experiment","title":"Fluted Glass","url":"https://rgbjoy.com/experiments/glass-grid","description":"Segmented log-compression flutes over a soft drifting cool-color wash.","category":"Glass & Refraction","publishedMonth":"2026-06","status":"live","technologies":["Three.js","R3F","GLSL"],"keywords":["glass","fluted","wash","cool drift","refraction","shader"]},{"id":"experiment:frosted-glass","kind":"experiment","title":"Frosted Glass","url":"https://rgbjoy.com/experiments/frosted-glass","description":"Capsules and beads pile up against a pane — depth is spent as blur, so the far ones smear into the fog.","category":"Glass & Refraction","publishedMonth":"2026-09","status":"live","technologies":["Three.js","R3F","GLSL","box3d.js","lil-gui"],"keywords":["frosted","glass","fog","blur","depth of field","physics","box3d","capsule","sdf","falloff"]},{"id":"experiment:glass-cross","kind":"experiment","title":"Glass Cross","url":"https://rgbjoy.com/experiments/glass-cross","description":"A vertical glass line warping thin black wavy lines on white.","category":"Glass & Refraction","publishedMonth":"2026-06","status":"live","technologies":["Three.js","R3F","GLSL"],"keywords":["glass","cross","lines","wave","black and white","refraction","shader"]},{"id":"experiment:glass-lines","kind":"experiment","title":"Glass Lines","url":"https://rgbjoy.com/experiments/glass-lines","description":"Refracted line-field glass lighting.","category":"Glass & Refraction","publishedMonth":"2026-06","status":"live","technologies":["Three.js","R3F","GLSL"],"keywords":["glass","lines","refraction","samuel yan","shader"]},{"id":"experiment:glass-point","kind":"experiment","title":"Glass Point","url":"https://rgbjoy.com/experiments/glass-point","description":"A 5×3 grid of point lenses refracting a flowing cosine wash background.","category":"Glass & Refraction","publishedMonth":"2026-06","status":"live","technologies":["Three.js","R3F","GLSL"],"keywords":["glass","point","gradient","lens","refraction","shader"]},{"id":"experiment:glass-waves","kind":"experiment","title":"Glass Waves","url":"https://rgbjoy.com/experiments/glass-waves","description":"Straight vertical glass lines refracting a gold cosine palette.","category":"Glass & Refraction","publishedMonth":"2026-06","status":"live","technologies":["Three.js","R3F","GLSL"],"keywords":["glass","lines","gold","palette","refraction","shader"]},{"id":"experiment:reading-glass","kind":"experiment","title":"Reading Glass","url":"https://rgbjoy.com/experiments/reading-glass","description":"A fixed strip of bent glass near the top refracts the article text with chromatic aberration as you scroll.","category":"Glass & Refraction","publishedMonth":"2026-06","status":"live","technologies":["Three.js","R3F","GLSL"],"keywords":["glass","refraction","aberration","text","scroll","lens","backdrop-filter","svg"]},{"id":"experiment:gradient-flow","kind":"experiment","title":"Gradient Flow","url":"https://rgbjoy.com/experiments/gradient-flow","description":"Living gradients that cross-fade curated palettes, blended in OKLab for natural color.","category":"Generative & Visual","publishedMonth":"2026-07","status":"live","technologies":["Three.js","R3F","GLSL","thi.ng","lil-gui"],"keywords":["gradient","color","palette","oklab","natural","mesh","shader","thi.ng"]},{"id":"experiment:moon-waves","kind":"experiment","title":"Moon Waves","url":"https://rgbjoy.com/experiments/moon-waves","description":"Lunar-toned atmospheric wave study.","category":"Generative & Visual","publishedMonth":"2026-03","status":"live","technologies":["Three.js","R3F","GLSL","lil-gui"],"keywords":["moon","waves","water","shader"]},{"id":"experiment:palm-leaf","kind":"experiment","title":"Palm Leaf","url":"https://rgbjoy.com/experiments/palm-leaf","description":"Tropical light filtering through large fronds.","category":"3D & Spatial","publishedMonth":"2026-04","status":"live","technologies":["Three.js","R3F"],"keywords":["palm","leaf","frond","procedural"]},{"id":"experiment:ps2-intro","kind":"experiment","title":"PS2 Intro","url":"https://rgbjoy.com/experiments/ps2-intro","description":"Concrete column field, refracting glass cubes, and whirling colored light trails over base fog.","category":"3D & Spatial","publishedMonth":"2026-06","status":"live","technologies":["Three.js","R3F","GLSL","Postprocessing"],"keywords":["ps2","playstation","intro","glass","fog","three","lights"]},{"id":"experiment:rectangle-farm","kind":"experiment","title":"Rectangle Farm","url":"https://rgbjoy.com/experiments/rectangle-farm","description":"Rotating physical blocks in a neat field layout.","category":"3D & Spatial","publishedMonth":"2026-04","status":"live","technologies":["Three.js","R3F"],"keywords":["rectangle","farm","grid","three","physics"]},{"id":"experiment:sky","kind":"experiment","title":"Sky Atmosphere","url":"https://rgbjoy.com/experiments/sky","description":"Procedural sky gradients and atmospheric depth.","category":"Generative & Visual","publishedMonth":"2026-04","status":"live","technologies":["Three.js","R3F","GLSL","lil-gui"],"keywords":["sky","atmosphere","sun","shader"]},{"id":"experiment:space-road","kind":"experiment","title":"Space Road","url":"https://rgbjoy.com/experiments/space-road","description":"2001-inspired octagonal corridor with long dark wall panels and forward drift.","category":"3D & Spatial","publishedMonth":"2026-06","status":"live","technologies":["Three.js","R3F","GLSL","Postprocessing"],"keywords":["space","road","2001","tunnel","octagon","three","odyssey"]},{"id":"experiment:unbreaking-waves","kind":"experiment","title":"Unbreaking Waves","url":"https://rgbjoy.com/experiments/unbreaking-waves","description":"Five orbiting petal blobs with palette flow and soft fog wash.","category":"Generative & Visual","publishedMonth":"2026-06","status":"live","technologies":["Three.js","R3F","GLSL","lil-gui"],"keywords":["waves","petals","palette","blobs","shader"]},{"id":"experiment:warped-stripes","kind":"experiment","title":"Warped Stripes","url":"https://rgbjoy.com/experiments/warped-stripes","description":"Noise-warped diagonal stripes with live-tweakable colors and warp.","category":"Generative & Visual","publishedMonth":"2026-06","status":"live","technologies":["Three.js","R3F","GLSL","lil-gui"],"keywords":["stripes","warp","noise","diagonal","shader"]},{"id":"experiment:wormhole","kind":"experiment","title":"Wormhole","url":"https://rgbjoy.com/experiments/wormhole","description":"Shader tunnel with a deep-space motion feel.","category":"Generative & Visual","publishedMonth":"2026-03","status":"live","technologies":["Three.js","R3F","GLSL"],"keywords":["wormhole","tunnel","shader","raymarch"]}]}