I’m currently building a large-scale marketplace project inspired by platforms like Amazon and top delivery apps. It’s called Pyramid — a multi-business, multi-vendor system designed to support restaurants, groceries, pharmacies, e-commerce, and other shop types under one unified experience. Each business type can include multiple vendors, and each vendor can publish and sell its own products.
One of the core challenges I’m solving is the category architecture. Pyramid supports two category layers: business-level categories (for example, pizza restaurants vs. fried chicken restaurants), and vendor-level categories and sub-categories that organize products inside each store. On top of that, I’m implementing a coupon and promotions system to support real marketing flows.
For the customer experience, users can register and log in, with OTP email verification to confirm their account. Products can include flexible variants such as color, size, weight, and other attributes, and customers must save a delivery address before placing an order. The ordering flow includes a complete cart and checkout, with online payments (including Stripe) and a clear order status timeline: Processing, Packaging, Out for delivery, Delivered, or Cancelled.
Pyramid is also built around multiple user roles. Customers can place orders and manage their profiles, vendors can sign up to create their own store and start selling, and delivery partners can register to handle deliveries. To support discovery and conversion, users can browse best-selling vendors, vendors with active discounts, and view related products on product pages. After delivery is completed, customers can submit ratings and reviews for both vendors and products.
The UI includes dynamic banners that can appear in different places: on the main home page (business types), inside each business type (like restaurants), and within individual vendor pages. Each banner is clickable and can route users to a specific product, vendor, category, or external link. The platform also supports light/dark mode and will be fully bilingual in Arabic and English.
Technically, I’m building Pyramid with Next.js and TypeScript, using Tailwind CSS and shadcn/ui for scalable UI components. For state and data handling, I rely on Redux Toolkit and selectively use React Query when server-state caching is a better fit. I switch between SSR and CSR based on each page’s priorities (SEO, performance, freshness of data), and I use Next.js fetching to handle full CRUD operations across the application.
To make it truly end-to-end, I built a real backend using Strapi. I configured content types and relationships for business types, vendors, products, categories, variants, coupons, banners, and orders, and I consume those APIs from the front end. This approach helps me work with real-world constraints—data modeling, permissions, validation, and scalable workflows—not just UI mockups.
The project is still in progress because it’s intentionally ambitious. Right now, I’m focusing on the hardest parts first: core business logic, edge cases, and building a stable foundation. Once the system is around 90%+ complete, I’ll fully polish the responsive design across mobile and desktop and refine the overall UI/UX. After that, I plan to develop an admin dashboard to manage vendors, products, orders, and platform content efficiently.
Pyramid is my proof-of-work project—a real, production-style marketplace built from scratch. I’m building it carefully and professionally, and I’m excited to share the final result as it comes together.
