E-commerce · 2025–2026
ICEEIT
A sub-zero streetwear storefront: six products, real cart and wishlist state, product video, and a checkout that is honest about being a demo.

- Role
- Design, front end, brand direction
- Stack
- React 19 · Vite · React Router · Plain CSS · localStorage
- Year
- 2025–2026
- Status
- Storefront is live and fully browsable. Checkout is a demo, so card and bank payment are not connected, and the site says so.
Purpose
The brand had photography and a visual language but no online home. Generic store templates flattened both. The brief was a storefront that reads like the label: cold, editorial and product-first, with shopping mechanics that actually hold state.
What was built
- Nine routed pages: home, shop, product detail, cart, wishlist, checkout, about, contact, FAQ, plus a 404
- Cart with add, remove and quantity updates, persisted to localStorage
- Wishlist with its own persisted state
- Product pages with colour and size selection and a video-first media treatment
- Category tiles and a “just dropped” grid fed by a single product data file
- Responsive header with mobile menu and floating cart
- Toast feedback for cart and wishlist actions
- Demo checkout that states clearly that no card is charged
Decisions
Video before photography
Clothing is easier to judge in motion, so product cards play muted clips on hover and in view on mobile, with a still as the fallback. Media is keyed by filename in one data file, so the brand can swap assets without touching components.
State that survives a reload
Cart and wishlist live in React context backed by localStorage. The first version lost the cart on refresh; persisting it was a small change that removed a whole class of user frustration.
Saying “demo” out loud
The checkout shows delivery fields and order summary, then states plainly that no card is charged and that payment integration is not configured. A storefront that pretends to take money is worse than one that admits it cannot.



Questions about this project? Email me.