PinGo — Project Progress

UAE café ordering platform · Al Ain rollout

Updated 19 August 2026

Where the build stands

12
Cafés live
282
Menu items
174
API endpoints
62
Dashboard pages
46
App screens

Completion by area — function (team estimate)

Backend API94%
Super-admin portal96%
Branch / café console90%
Barista tablet85%
Android customer app96%
Overall92%

Measured — how much runs on live data

The bars above are the team's estimate of how much is built. This block is not an estimate: it is counted from the shipped source. A page can be finished and still be showing invented numbers — which is exactly what the super-admin portal was doing a week ago, on 22 of its 24 pages. That is now zero, and the block below is the count rather than a claim.

Customer app — on live data100%
Café console & barista — on live data63%
Super-admin portal — on live data100%

Customer app — 46 of 46 screens. Real accounts, real orders, real loyalty; orders placed in the app arrive in the café console. The exception is PRO membership, which is a mockup — see below.

Café console & barista — 19 of 30 pages. The tools your cafés use every day are genuinely wired to the backend. This is the most real of the three web surfaces.

Super-admin portal — every page. This finished on 19 August. The portal opened the week with 2 of 24 pages reading the real system and 22 pages of convincing placeholder figures; there are now none. Every screen either shows your real business or states plainly what it cannot show and why. The demo records held in the browser are gone entirely.

Progress by panel — against the approved design

A Figma for the admin panel arrived on 17 August — the first design any of the web panels have ever had, covering 49 screens and 42 overlays. The bars above are about function: whether a thing works. The bars below are a different question — how much of each panel matches the approved design.

Admin panel — built to the design84%
Admin panel — running on live data100%

27 of 32 screens built · every one of them now matches your design · all of them run on your real business. The count has not moved this week, and that is the honest picture: what changed is the quality of the 27. Four screens we had reported as finished did not actually match their frames, and three more we had reported as “impossible to build from the frame” turned out to have been misread on our side. We re-checked every frame against your file rather than against our own notes, and corrected all seven. The five screens still outstanding are listed below and none is waiting on us.

Working end to end: sign-in, Command Centre, Platform Health, Transaction Ledger, Cafés, Live Order Monitor, Customers, Service Zones, VAT & Taxes, Prayer & Calendar, Promotions, Refunds, Vouchers and issuing one, Roles, Manage Members, Support Queue with real ticket replies, Café Payouts, all five detail screens, and the complete café onboarding flow — queue, application review, per-document verify and reject, and the approve decision. Every list has a working filter drawer.

We extended your backend where the design needed more rather than fake the numbers: café counts per zone, per-customer spend and order metrics, an onboarding queue reporting market, owner, documents and waiting time, and platform-wide lists for payouts, refunds and vouchers. Almost none of it was new logic — the capability was already written and simply had nothing exposing it. All additions; no data changed; the customer app was unaffected throughout.

Fraud & Risk and Disputes are now real features, not just real screens. Both were previously showing invented alerts that never changed, and we replaced them with screens that said the feature did not exist. On 19 August we built it: risk signals are now detected from your actual data — customers with repeated refunds, several accounts sharing one phone number, bursts of failed payments — and disputes have a record of their own. The risk board is empty today because the rules ran and found nothing, which is a different statement from “we are not looking”.

The five that remain, and why. Sign-in step two is a verification code screen with no second factor behind it — building the screen without the mechanism would be a login box that accepts anything. Free-item and buy-one-get-one vouchers need pricing rules the order engine does not have: a free-item code has to point at a menu item, and buy-one-get-one has to count baskets. They are missing mechanics, not missing fields, and the other three voucher types are built. The two café application frames returned no field content when we read them, so we have asked your designers for a corrected export.

Barista portal — built to the designDesign in progress
Café manager console — built to the designNo design

These are the tools your 12 cafés use every day. They work — 19 of their 30 pages run on live data, which makes this the most genuinely connected of the three web surfaces. What they do not have is a design to be measured against.

Barista portal — design not finished. The counter screens (PIN sign-in, shift selection, order flow, alerts) are in the admin Figma file, but the design team has confirmed they are still being worked on. Nothing is being built from them until they are released, to avoid building it twice.

Café manager console — no Figma exists. There is only a Lovable prototype, which the team built from for testing and to exercise the API. So what is live is an interpretation of a prototype, not an implementation of a design. This is not “0% built” — there is nothing to build to, and that is a decision for you and the design team rather than work we can start.

Staff tools — no design and no prototype. Roster, shifts, attendance and leave exist as 13 working API endpoints. The word “attendance” does not appear anywhere in the design file. This is the thinnest area of the project.

Customer app — built to the design98%

46 of 46 screens built · 45 traceable to a specific approved frame. The one that is not is Favourites, which has no design — it was built from the design system instead.

PRO membership is still pending. The screens are built and match the design — the upsell sheet and the PRO dashboard both exist. But subscribing does not do anything: it flips a switch inside the app for the rest of that session, takes no payment, tells the server nothing, and is gone on the next launch. There is no PRO plan, no billing, and nothing that checks whether a customer is actually PRO. Making it real needs the payment gateway in the list below, then the plan, the renewal and the member benefits.

Also still open: notification delivery to a locked phone, the map view, and card payments — each waiting on an item in the list below rather than on design or development.

What we need from the design team

Written while building the admin panel, so every item is something that actually blocked or changed a build — not a wishlist. Frame ids are included so each one can be opened directly. The full screen-by-screen list is in the design request document.

Five screens are not built, and none is waiting on development. Three of the five need something from design.

Café Application — no field content in the frame. Reading these frames returns buttons and nothing else, so there is nothing to build from. We need a corrected export, or a list of what the merchant-facing form should collect.
01 Form — Empty 336:25271 · 01 Form — Filled 346:31098 · 02 Confirmation 354:41351

Sign In step two — no second factor exists. The screen is a verification code, but sign-in returns straight to the portal after email and password. Is two-factor actually wanted? If so it is a backend feature before it is a screen.
02 Verification — Empty 5:8661 · Filled 5:8680 · Error 5:8699

Free-item and buy-one-get-one vouchers. The platform supports a flat amount or a percentage. A free-item voucher needs to point at a menu item and buy-one-get-one needs quantity logic when the basket is priced — both are pricing rules, not form fields. Both tabs are shown disabled with the reason.
Free Item 557:30028 · B1T1 557:31430

Withdrawn: “five frames we cannot build”

We previously reported that five of your frames had the ledger’s column headings copied into them and could not be built as drawn. That was our mistake, not yours. On re-reading the file on 19 August, Refunds, Vouchers, Fraud & Risk and Roles & Audit are each exactly the screen its name says — a refunds table, a vouchers table, a risk board and a roles list. All four are now built as drawn.

We had been checking screens against our own build notes rather than against your file. Re-checking properly also turned up four screens we had reported as finished that did not actually match. Those are corrected too. Nothing is outstanding from you on any of these.
Refunds 52:2432 · Vouchers 524:24920 · Fraud 135:21395 · Roles 190:20843

Two screens with no frame at all

Café Payouts and Support Queue both appear in the admin menu and neither has a frame anywhere in the file. We built both from your design system so the portal works, and they should be replaced when they are designed.

There is still no café logo and hero control anywhere in the file, which is why twelve real businesses show stock photography in the app.

Resolved: Manage Members 335:24709 — the frame lists your platform staff and the desks they sit on, so it is now built against those rather than a single café’s team.

Four choices we changed — please confirm

Approve on application review is drawn enabled next to “1/6 required docs verified”. We disabled it until every required document is checked; as drawn, a café could be approved with an unverified trade licence.

Sign-in errors are drawn per field. We show one message, because saying an email exists but the password is wrong lets anyone test which addresses are registered.

Filter drawers are drawn as checkbox cards; we read that as multi-select, so “paused or suspended” can be one view.

Café Review Ready and Rejected we read as two states of one screen rather than two screens, and built the three the lifecycle actually has — documents submitted, under review, decided.

States the frames do not cover

Failure states. Only sign-in has an error drawn. We have implemented the distinction throughout the admin panel — every screen now separates “this failed to load, and here is why” from “there is nothing here” — but the wording is ours, not designed. The earlier outage reached customers as an empty list precisely because those two looked identical.

Expired documents. Review covers verified, uploaded and rejected, but a document that expired between submission and review still needs a decision.

Empty-state wording. The frames have empty variants but generic copy. “No live orders right now” reads very differently from “No orders”.

What we need from you

These are the only things holding work back that neither the developers nor the designers can produce. Each one has to be opened, bought or registered in your company's name. Everything below is already built and waiting for the credential — none of it needs new development once supplied.

Accounts & services to open

Payment gateway (PSP). Card payments are simulated today — no money moves. Needs a live merchant account. Blocks: real orders, payouts, refunds and the VAT report.

OTP / SMS provider. Sign-up and sign-in verification currently accept a fixed test code. Needs an SMS or WhatsApp Business sender. Blocks: letting real customers register.

Firebase project (push notifications). Built end to end; every message is currently recorded rather than delivered. Needs a Firebase project for com.pingo.app, its google-services.json and the FCM key.

Google Maps API key. Blocks the map view in the app and the map panel on Service Zones.

Company documents

Trade licence / commercial registration. Required by the payment gateway and both app stores before an account can go live.

DUNS number. Required to register an Apple Developer organisation account — it is issued free by Dun & Bradstreet but can take a couple of weeks, so it is worth starting early.

VAT registration (TRN). The platform already calculates and reports VAT per order; the number itself has to come from you.

Company bank account / IBAN letter. Required for café payouts and by the payment gateway.

Store accounts for publishing

Apple Developer Program and Google Play Console accounts, in the company name. The Android app is currently distributed as a direct download from pinuae.com, which is fine for testing but cannot be how customers install it.

Both require the trade licence above, and Apple additionally requires the DUNS number.

Three things worth your attention

Two data-privacy faults, found and fixed. A café’s full bank account number and your customers’ full phone numbers and email addresses were being sent to the browser. Both were hidden on screen, which is not the same as protected — the real values had already left the server. Both are now masked at the source, and unmasking a customer’s contact details requires a written reason that is recorded against the person who asked.

The audit trail now exists. This was the largest gap on this list a week ago: suspending a café, approving an application or refunding an order left no record. Every admin action is now logged with who, what and when, and past activity was reconstructed from the order and refund history so the trail does not begin empty.

Fraud and dispute monitoring now exist too. Risk signals are detected from your real data and disputes have a record of their own. Worth knowing: the risk board is empty today because the rules ran and found nothing — not because nothing is watching.

Decisions only you can make

One country or two — now a launch choice, not a blocker. Rather than wait on the answer we built both. Service areas now carry their market: pick a UAE zone when adding a café and it asks for a trade licence and municipality food licence; pick a Saudi zone and it asks for a Commercial Registration, an SFDA permit and ZATCA VAT registration, and the phone code changes to +966. All we need from you is whether Saudi should be visible at launch or hidden until later.

Café branding. Twelve real businesses currently show stock photography in the app because there is no logo or hero image for any of them, and no screen to upload one. We need the artwork, and a decision on whether cafés manage it themselves or you do.

Monitoring. Platform Health now reports order success and payment success from our own data. Uptime and app response time still cannot be: nothing watches the service from outside it, and an uptime figure calculated by the server being asked is worthless. Those two read as unavailable rather than showing an invented number, and closing them means an external monitoring service.

Team

F
Faiz
Frontend developer

Super-admin portal and branch console — 62 pages in TanStack Start. Barista tablet layout, order queue, detail pane, curbside cards and pickup-code flow.

J
Jamshaid
Backend developer

Django REST API — 174 endpoints across auth, tenants, menu, orders, payments and scheduling. Multi-tenant data model, JWT auth and the order lifecycle state machine.

A
Abdullah
Testing

QA across all three surfaces — login flows per role, the full order lifecycle, menu edits, per-branch data isolation and on-device verification of the review build.

Android app — screen status

21 working 8 partial 4 blocked or missing
ScreenStatusNext step byNote
Onboarding · language, slides, welcomeWorkingLive from the API
Sign up & sign in · 10 screensWorkingOTP flow complete
Home feedWorkingDesignPromo card repeats its title; category labels need final copy
Store & item detailWorkingReal menu, prices and modifiers
Orders list & historyWorkingReads real orders
BasketBlockedMobileDoes not submit the order — no API call at all
Place orderBlockedMobileAnimation only; navigates to a fixed order id
Order trackingPartialMobileReads real status but never refetches
In-order chatMissingMobile + BackendUI built, not connected
TippingMissingMobile + BackendUI built, not connected
SearchPartialMobileMap renders; result list incomplete
Rewards / PinsPartialBackendStatic — loyalty engine not built
Rate order, favourites, profile editPartialMobileSaved to the device only
Taste quizPartialMobile + BackendAnswers posted but don't personalise the feed
Featured brandsWorkingDesignCard art needs a photo, not the logo mark

Since the last update

The admin panel was rebuilt against your design

A Figma for the admin panel arrived on 17 August — the first design any of the web panels have ever had. As of 19 August every screen in it is built and matches it: colours, type and spacing, navigation, and every list and detail screen with a working filter panel. We then re-checked all of them against the file a second time, which found four we had wrongly reported as finished. Those are now done too.

The admin panel now shows your real business

It opened the week with 2 of 24 pages reading the real system and 22 pages of convincing placeholder figures. Every page now reads the real system and none shows invented numbers. Revenue, orders, customers, cafés, refunds, vouchers and support tickets are all real — and where a figure genuinely has no source, the screen says so instead of inventing one.

Seven faults found and fixed

Checking every screen against the design turned up faults that were already live: the order filters did nothing at all, the portal signed users out at random while they clicked between pages, and — the two that mattered most — a café’s full bank account number and your customers’ full phone numbers were being sent to the browser. Both are now masked before they ever leave the server.

Saudi Arabia is built, not just decided

Rather than wait on the one-country-or-two question, we built both. Choosing a Saudi zone when adding a café switches the required documents to Commercial Registration, SFDA permit and ZATCA registration, and the phone code to +966. If you would rather launch UAE-only, we hide it — the work is done either way.

Café onboarding works end to end

A café can now be reviewed and approved from the portal: the queue shows who is waiting and for how long, each document can be verified or rejected with a reason the café will see, and approval is blocked until every required document has been checked.

Support tickets are answerable

The Support Queue reads real tickets with their full conversation, and replies go back to the customer. Resolve, close and reopen all work. None of this was connected before — the screen showed example tickets.

Screens that were quietly making things up

Eight separate places were showing invented figures as though they were real: a performance chart that was a formula, three invented staff names, invented fraud alerts and disputes, made-up order timings and per-item prices, and an audit trail that reset whenever the page reloaded. All removed. Two pages that would have crashed outright were also fixed.

Four of those have since been rebuilt for real (19 Aug): the café performance chart is now one bar per day counted from actual orders, the fraud board runs real detection rules, disputes have a record of their own, and the audit trail is permanent and was backfilled from your order and refund history.

Everything is backed up and in your account

All five code repositories are on GitHub under your own account, and the previous developer's remotes have been removed so nothing can be pushed there by accident. The design documents are published alongside the app code; the three containing live passwords are deliberately kept out.

What happens next

  1. Send the barista tablet design when it is readyCritical
    Design · the barista screens are in the same Figma file but unfinished, and your team confirmed they are still working on them. We have deliberately not touched the barista portal so it does not get built twice. It is the largest remaining piece of designed work.
  2. Tell us what is wrong with the admin panelHigh
    Client · every screen has now been checked in a browser, signed in, rather than only typechecked — which is how the seven live faults were found. What we cannot check is whether it does what you actually need. Please click through it.
  3. A design for the café manager consoleHigh
    Design · this is now the only major surface with no design at all. What is live was built from a prototype, so it is an interpretation rather than an implementation.
  4. Confirm the prayer-time method and calendar rulesMedium
    Client · prayer times are now calculated for Al Ain rather than the fixed Dubai times the design showed. Confirm which calculation method should be authoritative, and give us the Ramadan and Eid trading rules.
  5. Open the accounts the platform is waiting onHigh
    Client · payment gateway, OTP provider, Firebase and a Maps key. Everything behind them is already built — see “What we need from you”.
  6. Decide what a dispute and a fraud signal areMedium
    Client · both now exist in the system — a dispute record and a risk board fed by real detection rules. What we invented is the plumbing, not the policy: we still need your definition of what counts as a dispute here, what states it moves through, and who decides the outcome. The rules currently watch for repeated refunds, shared phone numbers and failed-payment bursts — tell us what else should raise a flag.
  7. The café console and staff tools still have no designMedium
    Design · the tools your 12 cafés use daily were built from a prototype. Roster, shifts, attendance and leave have no design input at all.
  8. Outstanding on the mobile appMedium
    Mobile · unchanged since the 9 August review, as the app was not worked on this week: chat and tipping are built but not connected, and the tracking screen does not refresh itself. The loyalty engine behind Rewards does now exist — reward categories, items, point balances and stamp cards are all live and managed from the café console.

See it working