← Back to Portfolio

Origin

PeerFit v1

Where it started.

A sports matchmaking platform built from scratch in PHP and MySQL. No frameworks. No shortcuts.

PHP
MySQL
JavaScript
HTML / CSS
XAMPP

Origin

About

PeerFit v1 was the project that started everything. A social sports platform built entirely from scratch: user accounts, profile management, activity matching, friend requests, and real-time chat, all running on PHP and MySQL through XAMPP. No frameworks. No abstractions to hide behind.

Users could create an account, set their sports and skill levels, browse nearby players, send friend requests, and message each other once matched. An activity system let people post sessions and find others to join them. Every feature was hand-rolled: form validation, session handling, SQL queries, the lot.

Building without a framework made every decision explicit. How a form submits, how a session persists, how a query returns the right rows — nothing was handled for me. That constraint was the best possible education before touching React.

Interface

Screenshots

The original interface — plain HTML and CSS, every pixel placed by hand.

PeerFit v1 - landing
1 / 4

Landing / Browse

Takeaways

Lessons

v1 taught me how the web actually works at the request level. Every session cookie, form submission, and database join had to be reasoned through manually. That groundwork made picking up React and TypeScript significantly faster — I already had a mental model for what the framework was doing underneath.

It also made the case for structure. As the project grew, mixing layout, logic, and SQL in the same PHP file made iteration painful. That friction directly shaped how I approached PeerFit v2 — separation of concerns, typed data contracts, and a proper auth layer weren't nice-to-haves. They were the things I'd learned to miss.

The core idea survived both versions: find people to play sport with, match by skill, and make it easy to connect. Getting from a PHP monolith to a production Next.js app with Supabase auth was the whole journey. v1 is where it started.