JJ

Jojo Dance — Front-End Developer

About Me

Hello hello! I'm Jojo, an experienced front-end developer who loves bold design and a good technical challenge. Before coding I studied engineering, so problem-solving comes naturally; building on the web lets me pair that with a creative outlet. My work spans 3D interactive visualisations, responsive design systems, and pixel-perfect implementations. Having worked mostly with start-ups, I've owned entire codebases — integrating backend APIs, authentication, and security along the way. When I'm not coding, you'll find me on my bike, at the beach or at the pub!

How I got here

2016 — 2020

BEng Mechanical Engineering, 2:1

University of Bristol

Covered systems & control, mechatronics, and finite element analysis — then earned a First on my final-year project, applying MATLAB simulations and neural networks to experimental research.

Jan — Apr 2021

Software Development Bootcamp

Nology

12-week intensive covering JavaScript, React, and software engineering fundamentals — agile workflows, best practices, and real client projects.

Aug 2021 — Dec 2022

Junior Front-End Developer

Bendi · Remote/London

Led front-end on an MVP reporting app for Shopify merchants, then built a retailer survey app solo — shipping with React, Next.js, GraphQL, and AWS (Amplify, Cognito, Lambda).

Jun 2022 — Dec 2022

Digital Trainer

Future Coders SE · Remote

Built a full web development course — projects, worksheets, and resources — then delivered hands-on training, reviewing code and coaching learners individually and in small groups.

May 2023 — Apr 2026

Front-End Developer

Radii Devices · Hybrid/Bristol

Sole front-end developer for a start-up building a browser-based CAD platform with Three.js — owning architecture, auth, and file versioning, then continuing as freelance lead through code review and deployment.

Projects

memaday

A group photo-sharing app: each group gets one randomly-selected photo per day. Members view it and comment. When the next day's photo is selected, the previous one — image and comments — is permanently deleted, everywhere. Claude Code-assisted project built for web and mobile with a shared backend API for authentication and data handling.

TypeScriptpnpm workspacesTurborepoHonoCloudflare WorkersCloudflare R2Cloudflare PagesCloudflare Cron TriggersWranglerPostgresNeonDrizzle ORMDrizzle KitBetter AuthExpoReact NativeReact Native WebExpo RouterReactlibsodiumVitestGitHub Actions

WorkMeOut

A simple workout app: build a workout, press start, follow the timer. Browse ~800 exercises with pictures and instructions, add your own, and run guided sessions that beep when time's up and keep the screen awake. Installable and fully offline, with all data stored on-device. Built to learn how Progressive Web Apps work, partly written by hand and partly with Claude Code.

TypeScriptReactVitevite-plugin-pwaWorkboxService WorkersWeb Audio APIScreen Wake Lock APITailwind CSSCloudflare WorkersESLint

Test Project Two

Placeholder project with a short description, just to see how a small card sits next to a large one.

Next.jsTypeScriptTailwind

Test Project Three

Placeholder project with a longer description, deliberately wordy so it runs past a single line and exercises the tile's overflow and expand behavior the same way memaday's does.

ReactNode.jsExpressPostgreSQLDockerAWSGraphQLRedis

Test Project Four

Another placeholder, with a long stack and a deliberately wordy description, so more than one tile in the grid can be overflowing and expandable at the same time — this one lets the click-to-expand interaction be tested project after project, in different combinations and orders, instead of only ever having memaday around to click. The stack below is padded out well past what it would realistically need, purely to guarantee this card clips at its normal size the same way memaday's does.

VueNuxtPiniaViteVueUseSupabasePostgRESTRow Level SecurityStripeStripe WebhooksResendZodVitestPlaywrightStorybookESLintPrettierGitHub ActionsFly.ioSentryCloudflare DNSFigmaLinearpnpmTurborepo

Test Project Five

A fifth placeholder, also deliberately overflowing, with its own long list of technologies — so the grid has to keep multiple pinned and expanded tiles from ever colliding with each other or with the rest of the grid as they're clicked through one at a time, in different orders and starting from different positions in the layout. Long enough on its own, before even counting the stack list below, to clip at the card's normal size.

RustAxumTokioSQLxSQLiteWebAssemblywasm-bindgenReactZustandTailwind CSSRadix UITanStack QueryDocker ComposeNginxLet's EncryptGitHub ActionsGrafanaPrometheusLokiMinIOCaddy

Skills

Contact

Get In Touch

If you have a project in mind or like my work then give us a shout!