Mahir Faisal
All projectsCase study · 2026
Local data / web appOct 2026

BazarDor

A Bengali-first daily commodity price tracker for markets across Bangladesh.

Role
Full-stack developer & interface designer
Stack
8 tools
bazardor-mhr3d.vercel.app
BazarDor homepage in Bengali with a green price ticker, vegetable illustration and market categories.
Live interface

Overview

BazarDor (বাজার দর) makes everyday market prices legible in Bengali. It brings today's commodity prices, risers and fallers, category browsing and market-by-market breakdowns into one clean interface, with authentication and a resilient data layer underneath.

The problem

Daily commodity prices are scattered across markets and often presented in English-first interfaces. A shopper should not need to translate a table in their head to know whether rice is up this week. BazarDor treats Bengali as the default language and the local market as the default context — not an afterthought.

What I built

The product, piece by piece.

  • 01

    Bengali-first typography

    Hind Siliguri, Bengali numerals and carefully tuned line lengths make prices and categories feel native rather than translated.

  • 02

    Today at a glance

    A live price ticker, top risers and top fallers surface the movement that matters before the full product grid.

  • 03

    Category and product detail

    Dynamic category pages support sorting and filtering, while product pages break prices down by market with min, max and average values.

  • 04

    Authentication that fits

    BetterAuth provides email/password plus Google and GitHub OAuth, protected product routes and a small profile area for updating account details.

  • 05

    A data layer with a plan B

    Primary and fallback API endpoints, skeleton loading states, empty states and toast feedback keep the app honest when a feed misbehaves.

The hard parts

Challenges & decisions.

01

Designing for Bengali first

Bengali glyphs, numerals and line heights behave differently from Latin defaults. The type scale, numeric formatting and mixed Bengali/English labels needed their own rules, not a direct port of an English dashboard.

02

Data that cannot afford to disappear

Price comparisons are only useful if the feed is available. I added automatic failover between API endpoints, explicit loading and error states, and sorting/filtering that remains stable across dynamic routes.

03

Auth across server and client

BetterAuth sessions, protected product detail pages and profile updates cross the App Router boundary. Keeping the signed-in state consistent without duplicating logic was the main integration challenge.

04

A local product, not a translation

Per-kilogram and per-dozen units, market names and the visual language of a Bangladeshi bazaar all matter. The interface uses local vocabulary and a green, produce-led palette instead of a generic fintech blue.

What's next

Potential improvements.

  • Cache price feeds with ISR or edge caching and show a clear last-updated timestamp.
  • Add historical price charts and optional price-drop alerts.
  • Turn the app into a PWA with push notifications for daily changes.
  • Expand market coverage and add a lightweight verification workflow.
  • Add automated tests for the API failover and auth boundaries.
  • Instrument client errors without exposing personal account data.

Want to work on something like this?

Start a conversation