A mobile shopping app on a live Shopify store
- Mobile app
- E-commerce
- Shopify
- Admin panel
- CI/CD

- Online retail
- B2C
- In development
- Flutter, Flask, PostgreSQL, Redis, Meilisearch, React
- Georgia
About the client
isurve.ge is an online store in Georgia that runs on Shopify. The app is a new sales channel beside the website; products, prices, stock and orders stay in Shopify.
Challenge
Give an established Shopify store iOS and Android apps in three languages without replacing the store: one catalogue, one stock count, one set of orders.
Solution
- One Flutter app for iOS and Android, in English, Georgian and Russian
- A Flask backend that keeps the app in step with Shopify
- Search in three languages on Meilisearch
- Rule-based recommendations with weights the staff can tune
- Checkout by card, cash on delivery or points
- Push campaigns and advertising pages
- An admin panel with roles, a second sign-in factor and an audit log
- Automated checks on every change: types, tests, API contract, security
Shopify stays the source
Products, prices, stock, translations and orders stay in the client’s Shopify store, and the website is not touched. Our backend imports the whole catalogue, then follows Shopify’s webhooks, with a repair pass for any event that was missed. Orders placed in the app are written back to Shopify, so the store’s staff keep working where they already do.
One app for iOS and Android
A single Flutter codebase, organised feature by feature, in English, Georgian and Russian. What a shopper has already opened (products, categories, specifications) is kept on the device and still opens without a connection; buying needs one.
What a shopper gets
A home screen with banners, bestsellers, new arrivals and two daily offers; a category tree with filters and sorting; product pages with a zoomable gallery, specifications, accessories and items often bought together. Comparison of up to four products, price history, a barcode scanner, ready-made bundles, a wishlist, reviews from verified buyers, order history with one-tap reorder, and a dark theme.
Search in three languages
Search runs on Meilisearch and takes queries in Georgian, Russian and English. Before choosing it we tested how it splits Georgian text into words, against thresholds written down beforehand; it passed, and the decision is recorded with its evidence. A shopper’s own sorting and filters always win over personalisation.
Recommendations a person can read
The first version recommends by rules, not by a trained model: similarity in category, attributes and price, what sells in a category, what is bought together, and what the shopper has just looked at. Staff set the weights and priority tags in the admin panel, and a new action changes the next batch of suggestions.
Payments and points
Card payments go through Keepz’s hosted page, and cash on delivery remains. Shoppers earn points on purchases and can pay for an order’s products entirely with points. An order is paid one way or the other, never a mix, and every movement of points is written to a ledger, so a refund takes the points back.
An admin panel for the store’s staff
A React admin panel lets staff change the app without a release: the category tree, delivery prices, campaigns, points rules, and the flags that force an update or put the app into maintenance. Four roles work in it, and the server decides what each may do. Sign-in needs a second factor, and every change lands in an append-only audit log.
Push campaigns and advertising
Staff send push campaigns to segments defined by rules, within consent, quiet hours and frequency caps, and see the delivery figures. A shopper who arrives from an advert sees the advertised product first; one who opens the app directly sees the week’s bestsellers.
How the work is run
Requirements, the data model, the API contract and more than forty architecture decisions are written down in the repository, and open questions for the client are numbered and tracked to an answer. Every change runs through CI: formatting, static typing, tests, the API contract, secret scanning and dependency advisories.
Where it stands
In development. The app, the backend and the admin panel are being built in one repository against a written scope, and CI checks every change. Screenshots of the app and results will be added after launch.