Abinet & Yenat Ethiopian Markets · Grocery · Retail · E-commerce
Two markets, one bilingual storefront.
- Client
- Abinet & Yenat Ethiopian Markets
- Industry
- Grocery · Retail · E-commerce
- Services
- Web Design · Branding · SEO
- Timeline
- Pre-launch · storefront complete
Abinet (Park Ave, Baltimore) and Yenat (Rosedale) are two Ethiopian markets under one owner. We built a single bilingual (English + አማርኛ) online store at abinetmarket.com that serves both. Customers shop one catalog; behind the scenes every order is routed to whichever store is closer and fulfilled by Uber delivery or in-person pickup, with payments running through Clover, the same system both shops already use at the counter.
01
The Challenge
Two physical markets, one owner, two neighborhoods, and two slightly different sets of shelves, but no way to shop either of them online. The Ethiopian community in Baltimore browses and buys in both Amharic and English, so a single storefront had to feel native in both languages, route each customer to the right store, and never promise an item the closer shop doesn't actually stock.
The hard part wasn't the pages, it was the plumbing. Both stores run Clover at the register, and there is no off-the-shelf connector between Clover and a modern storefront that handles per-location inventory. Get the sync or the routing wrong and the site sells teff the closer store ran out of yesterday.
02
What We Did
One catalog, two stores, distance-aware routing
The heart of the app: the customer enters an address, the storefront measures the real distance to each shop and assigns the order to the closer one, always showing which store is fulfilling. It never silently reroutes when something is out of stock, it falls back to pickup or the other store and tells the customer. 10/10 routing tests pass.
Genuinely bilingual, not a translate widget
English and Amharic are first-class throughout, built on next-intl across 65 pages in both languages, with proper Amharic typography, localized everything down to the 404, and both languages cross-linked so Google indexes each. Switching language is a real route, not a script that mangles the page.
De-risked the riskiest piece first
Before building a single screen on top, we wrote and proved a custom Clover ↔ Medusa inventory and order sync: signature verification, duplicate-event protection, and per-store stock handling. There's no connector for this, so we tested it offline until 25/25 checks passed. The hard engineering was done and verified before the UI depended on it.
Built to launch fast and rank locally
Clover checkout, an Uber Direct delivery quote in the cart, and a pickup chooser; an installable PWA; LocalBusiness and product structured data so each store shows up as a real Baltimore business; a WCAG 2.1 AA accessibility pass; and a Lighthouse performance budget enforced in CI so the site can't silently get slow. Real store photos were run through an image pipeline to stay under 250 KB each.
03
The Work








04
By the Numbers
- In-store onlyOne storefront, both markets
- Online shopping
- English onlyEnglish + አማርኛ, all 65 pages
- Languages
- Call the right storeAuto-routed to the closer store
- Order routing
- No off-the-shelf connectorCustom sync · 25/25 checks pass
- Clover ↔ storefront sync
Credits
- Strategy + Build: ADesign
- Storefront: Next.js + next-intl (EN / አማ) + Tailwind
- Commerce: Clover payments + custom Clover↔Medusa inventory sync
- Fulfillment: distance-based store routing + Uber Direct delivery / pickup
- Brand: Ethiopian tricolor system, both market logos, Amharic typography
