Projects

Real apps, shipped. Each one taught me something I couldn't learn from a tutorial.

Main Projects

FeaturedFull Stack

Pokémon Team Builder

Build and save your Pokémon teams using real stats from PokéAPI. Users register, log in, and manage their teams — all persisted to a PostgreSQL database. The whole thing is deployed: React frontend on Vercel, Spring Boot API on AWS Elastic Beanstalk.

Along the way I debugged a real production issue — the AWS environment was IPv4-only, but Supabase's direct host is IPv6. Tracked it down and solved it by switching to the IPv4 session pooler. Not a tutorial problem.

JWT auth — register, login, protected routes
PokéAPI integration — live sprites, types, base stats
AWS Elastic Beanstalk deployment + IPv4/IPv6 networking debug
PostgreSQL via Supabase — full CRUD on teams
React 18TypeScriptTailwindSpring Boot 3.2Java 20PostgreSQLAWS EBJWT
Building a Pokémon team with live PokéAPI data
// building a team — live PokéAPI fetch
Saved Pokémon team showing top stats
// saved team — top stats
FrontendSports Data

Dawg Sports

NFL and NBA sports site with live rankings, standings, and commentary. Built to explore real sports data APIs and get more reps with Vue.

VueJavaScriptCSS
Dawg Sports home — NFL power rankings, top dawgs, dawg watch
// home — live rankings, top dawgs, dawg watch
FrontendCommunity

SSB League

Smash Bros league site for tracking tournament brackets and player profiles. Built for an actual community of players — a real brief, real stakeholders.

JavaScriptCSS
SSB League home page with tournaments
// home — tournaments overview
SSB League player profile page
// player profile

Other Work

AC-2-Market

Marketplace app — product listings, user auth, and a clean storefront UI.

JavaScriptNode
GitHub ↗