Full Stack Developer
ANAAKA Market Scanner
Offline-first PWA for field teams collecting competitor pricing data across Turkey, GCC, and EU — barcode scanning, multi-currency, and admin price comparison with Excel export

Overview
ANAAKA Market Scanner is a mobile-first Progressive Web App built for the field teams of ANAAKA Natural Halal Cosmetics. Field agents install it on Android or iOS directly from the browser — no app store required — and use it to scan product barcodes and log competitor pricing data across retail stores in Turkey, the GCC, and EU markets. The app works fully offline, queuing up to 500+ entries in IndexedDB and syncing when connectivity returns. An admin dashboard gives the ANAAKA team cross-market price comparison, team activity tracking, and one-click Excel/CSV export of all collected data.
The Challenge
Field agents often work in stores with poor or no connectivity — a cloud-first approach would mean lost data and blocked workflows. The app also needed to serve multiple markets simultaneously, each with different local currencies (TRY, AED, SAR, KWD, BHD, OMR, EUR, USD), while keeping data isolated per user via Supabase RLS. Barcode scanning had to work entirely client-side without any network round-trip.
How We Solved It
Offline-First with IndexedDB Queue
All entries are written to IndexedDB first using idb-keyval, with UUID-based idempotent deduplication to prevent double-syncs. The app queues 500+ entries offline and syncs them to Supabase in the background when connectivity is restored — zero data loss regardless of network conditions.
Client-Side Barcode Scanning via ZXing
ZXing-js runs entirely in the browser — no server call, no third-party API. Field agents point their phone camera at a product barcode and the value is decoded instantly on-device. Works in poor lighting and on both Android and iOS without any native app installation.
Multi-Currency Support Across 8 Currencies
Agents select their local currency (TRY, AED, SAR, KWD, BHD, OMR, EUR, USD) per entry. The admin price comparison view normalizes all entries to USD equivalent, making cross-market price analysis instant — no manual conversion needed.
PWA — Installable, No App Store
Built as a full PWA with a web app manifest and service worker. The app prompts field agents to install it to their home screen directly from the browser. Achieves Lighthouse PWA score 90+ with cold start under 3 seconds on 4G. Works on both Android and iOS without any App Store or Play Store involvement.
Admin Dashboard with Price Comparison & Export
The admin portal shows total entries, markets covered, brands tracked, and active field team size. The Submissions view lists all entries with product image, brand, country, city, store, price with currency, submitting agent, and date. Price Comparison lets admins search any product and instantly see avg/lowest/highest USD equivalent across all markets. One-click CSV and Excel export via SheetJS.
Supabase RLS for Field User Isolation
Each field agent sees only their own entries in the My Entries view — enforced via Supabase Row-Level Security policies at the database level. Admins have full cross-team visibility. No application-level filtering required — the database enforces it.
Admin Dashboard
Submissions & Price Comparison
Field PWA — New Entry (Desktop)
Field PWA — Mobile
Field PWA — My Entries
Results & Impact
Delivered & Live
Live at app.anaaka.co for ANAAKA Natural Halal Cosmetics, Prague — deployed and in active use by field teams.
7 Countries Covered
Field team active across Turkey, UAE, Bahrain, Oman, Kuwait, Saudi Arabia, and Germany — all tracked in a single platform.
9 Competitor Brands Tracked
Pricing data collected across 9 competitor brands including Garnier, Nivea, Vatika, Vaseline, Pantene, and Himalaya.
10 Active Field Members
10 field agents onboarded and actively submitting entries — each with their own isolated data view.
500+ Offline Entries Supported
IndexedDB queue handles 500+ entries offline with UUID deduplication — no data loss on poor or absent connectivity.
Lighthouse PWA Score 90+
Cold start under 3 seconds on 4G. Installable on Android and iOS directly from the browser with no app store required.
Technical Architecture
Have a similar project?
I'm open to freelance projects and full-time roles. Let's build something great together.