Before writing code, I researched how users currently find halal restaurants. I examined:
Blogs & halal websites ā limited listings, often outdated, hard to use on mobile
Social media (Instagram, TikTok) ā hard to search by area or cuisine; lots of restaurant do not have Halal info on their social media pages
Google Maps ā missing halal filters or lacking detail
Call ā phone restaurants to check if they offer Halal food; can be time consuming
Halal apps ā poor coverage and outdated data
I also spoke with ~12 people who adhered to a Halal diet. Everyone said the same thing:
āThereās no reliable way to find halal restaurants thatās actually up to date.ā
To validate demand and messaging, I also did light outreach:
Built aĀ landing pageĀ and ran low-budgetĀ ads with low CPC
Shared the concept acrossĀ social mediaĀ and relevant communities
Reached out directly to people I knew in Muslim and food-focused circles
These early experiments brought inĀ ~300 sign-ups ina few days of outreach, confirming clear user interest in the idea.
š§° Defining Product Requirements
I scoped the MVP around real user pain points.
User-facing features:
Locate nearby halal restaurants on a map view
Browse options in a scrollable list view
Filter by rating, cuisine, or open status
Save favourites and add personal notes
Submit corrections or suggest new restaurants
Offline functionality
Backend needs:
Automate data refresh via Google Places API
Moderate user submissions with feedback
Implement credibility scoring to partially automate moderation and rate limiting
Prevent abuse (e.g. spam, malicious edits)
š Backend & Internal Tools
I built a customĀ React dashboardĀ to support internal ops:
Review and approve user-submitted content
Add admin feedback and rejection notes
Auto-fetch metadata (e.g. ratings, hours) from Google
Test mode to simulate updates before pushing live
Controls for creating and publishing new dataset versions
š Versioned Data Sync System
To minimise bandwidth and ensure users stay in sync, I designed aĀ comprehensive version-controlled update system which you can read more about >>here<<
How it works:
App checksĀ metadata.jsonĀ (tiny file with version + hash)
If out of date, it loadsĀ manifest.jsonĀ with available update paths
Based on current version, the app downloads the most efficient update
Each file is validated using a SHA-256 hash before applying
š Version Flow Logic
There are two main paths to reach the latest version (1.04):
1. Diff-Based Path (for regular users):
1.00 (full) ā 1.01 (diff) ā 1.02 (diff) ā 1.04 (diff)
ā Small updates (~5ā15KB) for users who stay current
2. Full Update Path (for new or out-of-sync users):
1.03 (full) ā 1.04 (diff)ā Full updates (~1-2MB) for new users or inactive users
ā Reliable fallback when version chain is broken
š§ Debugging & Recovery
If a version is faulty:
The file can be silently overwritten on the server
Users who downloaded it will fail hash validation and fall back to a known-good full update
This allows for safe recovery without breaking the update chain or requiring an app update
š Outcome
Built and testing Beta version
Selected forĀ Generate Accelerator Showcase
Backend + sync system designed for scale and community contribution