E-commerce platform
Kawaii Gift Shop. A storefront, payments and an admin dashboard.
- Role
- Full-stack developer
- Status
- Completed
- Stack
- Next.js / React / TypeScript / Express / PostgreSQL / Prisma / Stripe / Docker
From browsing products to managing a store.
A gift and stationery shop built end to end: a Next.js storefront, an Express REST API and a PostgreSQL database, with Stripe handling payment.
Some storefront and dashboard screens still use mock or seeded data. There is no live demo; the source is on GitHub.
- Product browsing, cart and wishlist
- Registration, login and saved addresses
- Order history and account management
- Admin dashboard for products, categories, customers and orders
- Inventory and stock management
Storefront, API, database and payments.
Client
Storefront
Next.js
Admin dashboard
Next.js
Server
REST API
Express, proxied through Next.js rewrites
Data & services
Database
PostgreSQL via Prisma
Stripe
PaymentIntents and webhooks
From cart to confirmed order.
- 1
Checkout request
The storefront asks the API to start a checkout.
- 2
Server-side amount
The API calculates the total itself instead of trusting client values.
- 3
Stripe PaymentIntent
A PaymentIntent is created and the customer pays through Stripe.
- 4
Webhook verification
Stripe reports the result to a verified webhook endpoint.
- 5
Order fulfilment
Successful payments create the order and update inventory in a Prisma transaction. A unique PaymentIntent ID keeps fulfilment idempotent.
Decisions that shaped it.
01
Separate frontend and backend
The Next.js app proxies API and upload requests to Express through rewrites, so each side keeps its own responsibilities.
02
Cookie-based authentication
Access and refresh tokens live in HTTP-only cookies, with protected routes for admin features.
03
Transactions for consistency
Inventory and order changes run in Prisma transactions so stock and orders stay in step.
04
Payment confirmed by webhook
Fulfilment is driven by Stripe events, not by the browser returning from checkout.
Want to know more?
Next project
PocketTogether
Shared expense management