Skip to content
GET/projects

Things I've built

Each of these solved a specific problem. The notes below focus on the interesting decision in each one rather than the feature list.

PHP2025

Laravel E-Commerce API

Token-authenticated REST API covering the full commerce lifecycle. Carts survive login, stock is decremented inside database transactions so overselling can't happen under concurrency, and payment webhooks are idempotent — a retried callback never double-charges or double-ships.

LaravelMySQLREST APIPayments
View source on GitHub
TypeScript2025

Next.js Dashboard Starter

An App Router starter that skips the boring three weeks of every admin project: auth and protected routes, server-side pagination and filtering on large tables, role-gated navigation, and a theme system that doesn't flash on first paint.

Next.jsTypeScriptPrismaTailwind CSS
View source on GitHub
JavaScript2024

MERN Task Manager

A Kanban-style workspace where board changes broadcast over WebSockets, so two teammates dragging the same card stay in sync instead of overwriting each other. Optimistic UI keeps the drag smooth; the server stays the source of truth.

MongoDBExpressReactSocket.IO
View source on GitHub
GET/projects/notes

Build notes

The part of a project that's worth talking about is rarely the UI.

Laravel E-Commerce API

PHP · 2025

Token-authenticated REST API covering the full commerce lifecycle. Carts survive login, stock is decremented inside database transactions so overselling can't happen under concurrency, and payment webhooks are idempotent — a retried callback never double-charges or double-ships.

Source

Next.js Dashboard Starter

TypeScript · 2025

An App Router starter that skips the boring three weeks of every admin project: auth and protected routes, server-side pagination and filtering on large tables, role-gated navigation, and a theme system that doesn't flash on first paint.

Source

MERN Task Manager

JavaScript · 2024

A Kanban-style workspace where board changes broadcast over WebSockets, so two teammates dragging the same card stay in sync instead of overwriting each other. Optimistic UI keeps the drag smooth; the server stays the source of truth.

Source

Have something you need built?

Tell me what the product has to do and where it's stuck. You'll get a written scope back — deliverables, timeline and price — before anyone writes code.