Veda Fashion
A storefront and admin system for an established boutique moving beyond Instagram and WhatsApp sales.

Intro
Veda Fashion was already an established Nairobi boutique, with customers finding and buying products through Instagram and a WhatsApp catalogue.
These channels helped customers discover products and speak with the team, but they made the business difficult to manage. Stock was hard to keep accurate, customer history lived in chat threads, and every order required manual coordination.
I built a storefront and admin system that gave the boutique a reliable way to manage products, orders, customers, and payments while keeping its personal approach to sales.
My role
I designed and built Veda Fashion’s storefront and admin system, covering product browsing, checkout, inventory, orders, customers, payments, and delivery.
I built it with React, TypeScript, TanStack Router, TanStack Query, Hono, and Cloudflare D1. I also integrated Clerk for authentication, Paystack for payments, Sanity for content, Sentry for monitoring, and Cloudflare for deployment.
Solution
The storefront gives customers one place to browse abayas, bags, shoes, sunglasses, and perfumes. Each product page shows the available colours and sizes, while out-of-stock options cannot be purchased.




The admin dashboard gives the team one place to manage products, stock, orders, customers, delivery, discount codes, payments, and store settings.
Process
I designed the system around how the boutique already sells instead of asking the team to change everything at once. Customers can still get personal support through familiar channels, while browsing, stock checks, checkout, and order records now live in one system.
D1 stores products, stock, orders, customers, delivery zones, and discount codes. A Hono API serves storefront data and protects admin actions. Sanity manages editorial content and product images. Clerk and a D1 allowlist restrict access to the admin.
During checkout, the server checks the price and stock, reserves the inventory, and creates a pending order before starting payment with Paystack. Payment notifications can arrive late or more than once, so webhooks, confirmation-page checks, and scheduled reconciliation all use the same process. This prevents one payment from changing stock more than once.
I shaped the admin around the team’s daily work: overview, orders, payments, customers, inventory, products, settings, and internal help. Filters and pagination are stored in the URL, so the team can refresh the page or share the current view without losing its place.
Lessons
Taking a business beyond Instagram and WhatsApp does not mean removing personal service. The goal is to give product availability, checkout, and order history a reliable system while keeping customer support human.
The admin deserves as much design attention as the storefront. For the boutique team, inventory, payments, delivery fees, order status, and customer search are the product they use every day.
Payment and stock updates must follow one reliable process. Payment notifications can be delayed, arrive more than once, or be missed. Checkout, confirmation-page checks, and scheduled reconciliation must all update the order in the same way, so the same payment cannot change stock twice.
Veda also became a reference for Velvet Emporium. Reusing the way each part of the system is owned and the payment flow saved time, while the two boutiques remained visually and operationally distinct.