A customer mobile app, a web storefront and an admin dashboard for an electronics and phone retailer, all on one backend that stays in step with the shop's accounting and stock. Live at mobilyiq.com.
A customer mobile app, a web storefront and an admin dashboard on one backend, kept in sync both ways with the shop's accounting and stock system. Customers browse, compare, save and order. The shop runs its catalogue, stock, campaigns and orders from the dashboard.
E-COMMERCE — MOBILE APP — ERP INTEGRATION
- Client
- Mobily, an electronics and phone retailer in Iraq (TODO: confirm the client is happy to be named)
- My role
- Product design and full-stack engineering across mobile, web, admin and backend.
- Duration
- August – September 2026
- Tools
Overview
Mobily is an electronics and phone retailer. I designed and built its digital storefront end to end: a customer mobile app, a web storefront and an admin dashboard on one backend. That backend stays in sync both ways with the accounting and stock system the shop already runs on.
It is fully bilingual and Arabic-first. Live at mobilyiq.com.
Context
The shop's stock, prices and accounting already lived in its ERP. The project added everything customer- and staff-facing around it: • browsing, search and product comparison • cart, checkout and order tracking • reviews, wishlists and back-in-stock alerts • campaigns • a full admin dashboard
All three apps share one codebase, so a product, a price or a label means the same thing everywhere.
Problem
Selling online usually means running a second system that slowly drifts from the real one. Prices go wrong, items get sold that aren't on the shelf, and orders never reach the books.
The data was the other half of the problem. The ERP held sparse, English-only records: item codes, not catalogue pages. Nothing in it was ready to show an Arabic-speaking customer comparing two phones.
The storefront had to sell from the same truth the shop counts with, and present it properly.
Constraints
The ERP is the system of record. It stays the single source of truth for stock, prices and accounting.
No card payments. Customers pay cash on delivery or by bank transfer, so stock must be held between order and delivery.
Bilingual from the data up, across mobile, web and admin.
Real-world data. The product records were built for accounting, not for customers: codes instead of names, missing images, and no Arabic.
Architecture
One backend serves three products: • the mobile app (Expo and React Native) • the web storefront (React) • the admin dashboard (React)
The connection to the ERP is isolated and runs in the background. A slow or unavailable ERP never slows a customer down, and nothing is lost if it's briefly offline. The ERP always has the final word on stock and prices, and history is never deleted.
Key decisions
The ERP stays the source of truth. An accepted order becomes an invoice, and received stock becomes a stock receipt. Price changes reach the storefront automatically. Stock held by undelivered orders is reserved, so nothing is sold twice.
A catalogue built from accounting data. A catalogue tool turns bare ERP items into real product pages, with Arabic names, brands, categories, colour variants, descriptions, key specs and photos.
Shop by real specs. Each category defines its own key specs, such as storage, RAM, screen and battery. Customers filter and compare on values taken from real products.
One codebase for every app. Shared building blocks keep mobile, web and admin consistent, and a change lands everywhere at once.
Pages search engines can read. Every storefront page has its own title and description, and missing pages return proper not-found responses.
Measure before optimising. Load testing maps the busiest paths through the store, so performance work goes where the measurements point.
Hard problems
One bad record shouldn't stop the store. A single problematic product could hold up the whole catalogue update. Updates now handle each product independently, so one item never blocks the rest.
Missing data overwriting good data. An empty field in the ERP could replace a good product photo. Updates now only ever improve a product page, never blank it.
Orders that changed after the fact. Renaming a product used to change past orders too. Each order now keeps the product details exactly as they were at purchase.
A slow dashboard and app. Full-size photos made both sluggish. Images are now optimised on upload, including every existing one.
Security
• Customer accounts are verified, passwords are protected with modern hashing, and sign-in is protected against abuse. • Separate access. Admin and customer access are completely separate. • Honest reviews. Only customers who actually received a product can review it.
Result
Live at mobilyiq.com. The mobile app, web storefront and admin dashboard run on one backend that stays in step with the shop's accounting and stock.
TODO: launch month, and one concrete change for the shop. Examples: first online orders in week one; staff no longer update prices in two places; no item sold online that wasn't in stock.
Stack
Mobile: Expo · React Native Web and admin: React · Vite Backend: Node.js · TypeScript Integration: two-way ERP sync
What I'd do differently
Make the ERP connection the backbone from the first commit, built from the start to handle a bad record or a brief outage gracefully.
Settle the bilingual data model before building screens. Adding Arabic and English fields later meant touching every app.
Load-test before launch traffic, not after. It's cheap, and it tells you exactly where to optimise first.
Selected projects / Keep exploring
A little more of my work.
FORMA — the coaching platform that keeps an athlete's progress from resetting every program
One system for a fitness coach's whole practice: programming, nutrition, check-ins, payments and chat. Each athlete gets a clear daily plan and a progress record that carries across every training block. Web platform live; athlete app in development.
Nova Store — a point-of-sale system shop owners can trust with their money
Point of sale, inventory and finance for retail shops: checkout to payroll on the hardware a shop already owns, with every amount stored exactly so the month-end numbers always match the receipts.
Marah — front-desk software that bills every child to the minute
Front-desk software for kids' play centers. Families check in by phone number, children are billed by the minute, cafeteria sales land on the same bill, and parents get a WhatsApp message when their child arrives and leaves.