Client project · 2025

G-Shop: a full-stack store for a paying client

An e-commerce MVP with a customer storefront, an admin dashboard, Stripe payments, shipping labels and AI product tools. I wrote the backend myself, using AI as a coding assistant.

RoleFull-stack developer, solo. Paid client engagement.
TimelineSep 10 – Nov 7, 2025 · 400 commits
FrontendReact 19, Vite, TypeScript, Tailwind + shadcn, Redux Toolkit, TanStack Query, React Router, React Hook Form + Zod
BackendNode, Express 5, TypeScript, Prisma, PostgreSQL, JWT + Argon2id
IntegrationsStripe (authorize, capture, refund), EasyPost (address checks, rates, labels, tracking), OpenAI, image storage
How I built itAbout half the code is mine, typed by hand, especially the backend and its routes. I used ChatGPT (GPT-4 era) as an assistant for scaffolding and for learning as I went.
Product page with the AI product assistant open
Every product page has an AI assistant that answers questions about that product
Admin dashboard site settings
The admin dashboard: theme, store and shipping settings without touching code

What I built

A real order flow, done safely

Placing an order checks stock, authorizes the card with Stripe, then creates the order and takes the items out of stock inside one database transaction, re-checking stock there so two shoppers can't both buy the last item. Only then is the payment captured and the order's status history recorded. The same service handles refunds and buying shipping labels.

The data model

I designed a Prisma schema of 29 models: products with variants, options and dimensions, collections and categories, carts, orders, transactions, invoices, coupons, reviews, stock movements, addresses and shipping history. A small script I wrote turns the schema into TypeScript types shared by the frontend and backend, so both sides always agree on the shape of the data.

A REST API with permissions

Swappable integrations

Payments, shipping, storage, auth and the database each sit behind an interface with interchangeable adapters. That paid off mid-project: the store started on Firebase, and I moved it to my own Express server and Postgres without rewriting the features.

AI features

Deployment

I deployed the frontend and backend myself: Docker for the API, a hosted Postgres database, and a static frontend host.

What it shows

The commit history shows me learning in public: Firebase, then a payment server because Firebase had no free server functions, then Prisma, Stripe, shipping and Docker, ending in consistent, scoped commit messages. This is the project where I learned how a backend fits together, by building one for someone who paid for it.

What I'd do differently today: add request validation on the server (it's only on the frontend forms), rate limiting, and real test coverage. G-Shop has one test. My later projects are where verification became the center of how I work.