Selected work / open for inspection

See the work.
Explore the thinking.

Projects I own and develop. Each example connects a real problem to the implementation, with a demo or source walkthrough you can explore.

Just Tools homepage showing its searchable collection of browser developer utilities.

Developer utilities

Just Tools

Small tools. Useful answers. Right in your browser.

The problem

Everyday development needs quick ways to format data, inspect text, and prepare prompts.

My implementation

I develop a collection of browser utilities with processing logic separated from the interface. The JSON formatter validates and formats input locally, with dedicated regression tests.

Try it / inspect it

Open the JSON formatter, paste an example, and format or minify it. Inspect the source to see how the tool logic is kept independent of the UI.

  • Next.js
  • TypeScript
  • Browser APIs
  • Vitest
Inspect the JSON processing logic
Gio’s soundboard with searchable sound pads, category filters, favorites, and an audio player.

Interactive web experience

Gio’s Soundboard

A playful interface with deliberate playback behavior.

The problem

A sound collection needs fast discovery and predictable controls as people browse, play, and return.

My implementation

Part of my personal portfolio, the soundboard combines search, category filters, and favorites with one audio player. Playback explicitly handles loading, pause, completion, and failure.

Try it / inspect it

Find a clip, play it, and try the controls. Favorites and settings stay in that browser; shared links select a clip without starting audio automatically.

  • React
  • TypeScript
  • Audio APIs
  • Supabase portfolio
Inspect the audio player

AI application · source walkthrough

Nucleus

The backend work behind an AI conversation.

The problem

An AI chat application must connect model selection and streaming with the user’s access and usage allowance.

My implementation

I develop Nucleus as an owned AI chat project. The chat route verifies the user, checks allowed models, reserves usage before generation, and settles usage around the response. Billing is handled separately through signed Stripe webhooks.

Try it / inspect it

Read the chat route to follow authentication, model access, and usage accounting. This walkthrough describes the implementation; it is not a claim that every model or paid tier is currently available.

  • Next.js
  • Supabase
  • Streaming
  • Stripe
Walk through the chat route

Let’s get it working

What’s getting in your way?

Tell me what you need. I’ll review the fit and explain the next step.

Tell me about it