Marketplace · Frontend · E-commerce

Briz Market — Local Shopping Marketplace for Nepal

Request a product, get offers from nearby stores, compare, chat and buy — local shopping in Nepal without going shop to shop

Briz Market — Local Shopping Marketplace for Nepal — Overview

Overview1 / 12

Challenge

Local shopping in Nepal is broken on both sides: shoppers need a product but don't know which nearby store has it, and local sellers have the product but nearby shoppers don't know. Briz already solved this in its mobile app; the web version had to bring the same stores and products to anyone with a browser — discoverable by location, fast on phones and desktops, indexable by search engines — and be built to grow into the full product phase by phase.

Solution

Shipped Phase 1 as a server-first Next.js 16 web app with a strict layered architecture (app → widgets → features → shared) so later phases slot in as new features, one server-side fetch layer for every API call, a map-based location picker that drives distance and 'nearest' sorting, live search with daily suggestions, store pages with live open/closed status, and app hand-offs (store link on phones, QR code on desktop) for the actions that still live in the mobile app.

Outcome

Phase 1 of the Briz web app went live at brizmarket.com on 9 October 2026, joining the existing iOS and Android apps — responsive on phones and desktops, indexable by search engines with structured data and API-driven sitemaps, and taken from first commit to launch in about five weeks. Later phases will bring the rest of the app's features to the web.

Architecture

Hover or tap a component to see what it does.

Shoppers on the web: Phones and desktops. Pages are rendered on the server, so they load fast and are fully indexable.

Key decisions

Why does the browser never call the API?

The API only accepts production origins, and one server-side layer means the guest session and country are added in one place.

Why layers that only import downward?

app → widgets → features → shared. Features can't import each other, so Phase 1 grew fast without tangling — and later phases add features without rewiring.

Why hand some actions to the app?

Phase 1 brings discovery to the web first; selling and cart stay in the app until later phases. A prompt that opens the store or shows a QR code beats a dead link.

Why so little frontend caching?

The backend owns caching. Only slow-changing data like categories and footer details is cached; per-visitor data never is.

Results

  • Web Phase 1 live at brizmarket.com since 9 Oct 2026
  • Joins the existing iOS and Android apps
  • Server-rendered and search-engine indexable
  • First commit to launch in ~5 weeks
Read the detailed study

Overview

Briz is a local marketplace for Nepal that connects shoppers with nearby stores. Shoppers browse products and stores around them, or request something they can't find; local sellers respond with offers showing price, availability and distance. The two sides then compare, chat and agree on payment and pickup directly.

Briz first launched as a mobile app — 'Briz - Shop Locally' on the App Store, and on Google Play for Android. I built the web version at brizmarket.com as a Frontend Engineer at Karobar Digital, from the first commit on 7 September 2026 to the Phase 1 launch on 9 October 2026.

Phase 1 and what comes next

Phase 1 brings discovery to the web: the home page, categories, store and product pages, search, location-based distances, recently viewed products, and the contact and feedback forms. Actions that aren't on the web yet — requesting products, adding to cart, becoming a seller — hand off to the mobile app through the App Store, Google Play or a QR code.

The web app will be built out into the full Briz product in later phases. The codebase was set up for that from the start: each new capability becomes its own feature folder, and types for planned features such as product requests and the wishlist are already in place.

The problem

For shoppers: you need a product, but you don't know which nearby store has it, so you call around or walk from shop to shop. For sellers: you have the product, but the customers around you don't know it. Briz fixes both sides with one loop — request, offer, chat, order.

Architecture

The codebase uses four layers that only import downward: app (routes) → widgets (page sections) → features (stores, products, search, location, categories, app download and more) → shared (UI primitives, hooks, utilities, the API client). Features never import each other and expose a single public index.ts, and the three largest — stores, products and search — are split into sub-features such as listing, detail, filters, operating hours and reviews.

Every call to the Briz API goes through one function, apiFetch, from a server render or a Server Action. It adds the country code and the visitor's guest session. The browser never calls the API directly.

Location and search

The location picker combines a Leaflet map, OpenStreetMap place search and a 'Locate Me' button. The chosen spot is saved in a cookie and stays inside Nepal. Without a location, distance tags hide and 'Nearest' sorting is disabled, so the page never shows misleading distances.

The header search shows live results as you type (debounced at 300ms, capped at a few products and stores), cycles its placeholder through daily suggestions from Briz's intelligence API, and remembers recent searches. Submitting opens a full results page with Products and Stores tabs, sorting and price filters.

Fast revisits and paged lists

'Load more' lists mirror their loaded pages into the URL, so a shared or refreshed link restores the same items, and browser back restores them too. Home page sections keep their last data in memory, so returning to the home page shows content immediately instead of skeletons while fresh data loads.

Resilience

A request proxy gets a guest session for first-time visitors before the page renders. If the API returns a server error or doesn't answer, the app checks a maintenance flag in Firebase Remote Config and sends visitors to a friendly maintenance page instead of a broken one.

SEO and sharing

Pages are server-rendered with per-route metadata and Schema.org structured data — Organization and WebSite on the home page, Product with Offer on product pages, and ItemList collections for listings. Sitemaps for stores, categories and products are generated by the API and served from the web domain, and the social preview image is a JPEG under 300KB so WhatsApp shows it.

Key Features & Capabilities

Feature 01

Location-Aware Discovery: A Leaflet map picker with search and 'Locate Me' saves the shopping location, which powers distance tags and 'Nearest' sorting for stores and products.

Feature 02

Live Header Search: Debounced results dropdown (top products and stores) as you type, rotating daily search suggestions, and recent searches kept in the browser.

Feature 03

Store Pages: Banner, gallery, store product shelves with category chips, live open/closed status in the store's own time zone, weekly hours, reviews, map, share and report actions.

Feature 04

Product Pages: Photo gallery with full-screen preview on touch screens, price and stock overview, description, and similar products.

Feature 05

Category & Catalog Browsing: Category grid and category pages with Products and Stores tabs, sort, price-range filters and 'Load more' lists whose pages survive refresh and browser back.

Feature 06

Recently Viewed: Products a visitor opens are remembered through a guest session and shown on the home page, ready the moment they come back.

Feature 07

Seamless App Hand-off: Actions not yet on the web in Phase 1 (become a seller, add to cart) open the App Store or Google Play on phones and a QR code dialog on desktop — never a dead link.

Feature 08

Search-Engine Ready: Server-rendered pages, Schema.org structured data (Organization, WebSite, Product, ItemList), API-generated sitemaps for stores, categories and products, and social preview images sized for WhatsApp.

Frequently Asked Questions

FAQ 01

What is Briz Market?

Briz (brizmarket.com) is a local marketplace in Nepal that connects shoppers with nearby stores. You can find products and stores near you, or request a product and get offers from local sellers with price, availability and distance — then compare, chat and buy without going shop to shop.

FAQ 02

How does Briz work?

Tell Briz what you need by typing it, describing it or uploading a photo. Nearby sellers send offers with price, availability and distance. You compare offers, chat with sellers, agree on a price, and arrange payment and pickup the way you both prefer.

FAQ 03

Is there a Briz mobile app?

Yes. Briz launched first as a mobile app, available as 'Briz - Shop Locally' on the Apple App Store for iPhone and on Google Play for Android. The web app at brizmarket.com followed on 9 October 2026.

FAQ 04

When did the Briz web app launch?

Phase 1 of the Briz web app launched at brizmarket.com on 9 October 2026, joining the Briz iOS and Android apps that were already live. It covers finding products and stores nearby, and the web app will grow into the full Briz product in later phases.

FAQ 05

Where is Briz available?

Briz currently serves Nepal. Shoppers pick their location on a map to see nearby stores and distances.

FAQ 06

What tech stack powers the Briz web app?

The Briz web app is built with Next.js 16 (App Router), React 19 with the React Compiler, TypeScript, Tailwind CSS v4, shadcn/ui on Base UI, Zustand, Leaflet with OpenStreetMap, and Firebase Remote Config, with server-side API calls through Server Actions.

FAQ 07

What was Sarthak Sharma's role on Briz?

Sarthak Sharma built the Briz web app's frontend as a Frontend Engineer at Karobar Digital — the architecture, pages, search, location, store and product experiences and SEO — from the first commit to the Phase 1 web launch.

Explore More Projects & Systems

All Projects →

01 / AI Security

Agent Monitor — Local Security Boundary for AI Agents & MCP

Architected a local-first security firewall and real-time activity monitor for autonomous AI agents and MCP tools, enforcing deterministic policy gating, capability sandboxing, and real-time execution telemetry.

02 / Full Stack

Tracky — Multi-Tenant Issue Management System

Architected a multi-tenant issue and bug management platform with eight role-based dashboards, JWT auth with rotating refresh tokens, real-time WebSocket notifications, and a partner API for external integrations.

03 / AI

Lumen — AI Marketing OS & Agent Suite

Built an integrated AI marketing platform combining a dynamic context chat agent (`aiagent`) with a full-featured Marketing Operating System SaaS (`marketingtool`) featuring multi-LLM routing, generative UI, Cloudinary asset pipelines, landing page builders, and automated lead capture.