Case study 04 — Personal project · E-commerce admin
ISStore
A store admin that's actually usable.
A complete e-commerce admin dashboard I designed and built end to end, twice: once in Next.js + TypeScript and once in plain HTML, CSS and JavaScript. Sign-in with OTP, orders, products, customers, analytics and settings. Every button works, so try it yourself with the demo login.
01 — The challenge
Why I built it
Most admin templates look good in a screenshot and fall apart once you click. I wanted to show that I can build a real product interface: dense data, many states, forms that validate, and a layout that holds up from a 375px phone to a wide desktop.
02 — My role
Everything, start to finish
Information architecture, UI design, interaction details and the full front-end build, in two stacks. The Next.js version uses the App Router with real routes, route guards, typed reusable components and Zustand state saved to localStorage, so your changes survive a refresh. The HTML version is a single fast file with no framework at all.
03 — What I built
Key screens
- Auth: sign in, sign up with a password-strength meter, an OTP verification step, forgot password and a one-click demo login
- Overview: KPI cards, 7/30/90-day ranges, a revenue chart, top products and live recent orders
- Orders: search, filters, sort, pagination, bulk ship, CSV export and a detail drawer with fulfil and refund actions
- Products: grid and list views, category filters, and add, edit and delete with full validation
- Customers: built from order data, with a profile drawer and notes
- Analytics: a conversion funnel, a category breakdown, traffic sources and top countries
- Settings: profile, store, notifications, security, avatar upload and a 2FA demo



04 — Front-end craft
The details that matter
- A single state model: shipping or refunding an order updates the badge, the overview and the customer records together
- Next.js static export: every route pre-rendered and served from plain hosting, with no server needed
- A Ctrl/Cmd + K command palette to jump to any page or record
- A sticky sidebar on desktop and a slide-in drawer on mobile, with no horizontal scrolling
- Inline validation with clear error messages, loading states on buttons and toast feedback
- Keyboard support and focus handling in drawers, dialogs and menus
05 — By the numbers
What's inside
Demo data only. It's a portfolio project, not a live store. Demo login: [email protected] / demo1234, or one click on "Try demo account".