BazarDor
A Bengali-first daily commodity price tracker for markets across Bangladesh.
- Role
- Full-stack developer & interface designer
- Stack
- 8 tools
- Live at
- bazardor-mhr3d.vercel.app

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.
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.
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.
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.
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.