Project Overview
Amar (عَمار) is an Android app for a building contractor who runs several sites at once. It replaces the paper notebook: daily workers and their weekly pay, bricks received and built, what each site owner owes, expenses, equipment and reports, all in Egyptian Arabic, all offline on the phone, and every record can be spoken instead of typed.
It was designed with the client from a written spec and several design rounds, and built on the same React Native and Expo stack as my Money Follows app.
Key Features
- Voice entry for everything: say "Hassan, Mahmoud and Ali came to the mall, I gave Ali 200 as an advance, and 10,000 red bricks arrived" and get one card per record to check, fix in place and save
- A voice assistant that also creates sites and workers, changes wages and prices, pays the whole week, undoes the last entry, and answers 15 kinds of questions out loud ("how much does Hajj Sayed still owe?")
- Home with the money owed by site owners, alerts for late payers and bricks running low, today's attendance, advances and bricks built, and the week's payroll
- Site account: what the owner owes (bricks × price per 1,000 plus items like door lintels), payments received, agreed amounts with progress, labour, expenses and profit
- Workers paid by the day or per 1,000 bricks built, wage history, quick attendance («زي امبارح», «الكل يوم», tap to cycle), and Thursday payroll with carry-over and «حاسب الكل» to pay everyone
- Owner statements, payslips and reports as PDF to WhatsApp; owner reminders with the statement attached
- Job price estimate from wall measurements that becomes a new site with its agreed amounts; equipment tracking ("where is the mixer?"); search by words, kind, month and site
- Copying the old notebook: a calendar with a sticky day, so months of paper records can be entered on their real dates
- App lock with fingerprint, daily backup to a folder, evening and payday reminders, first-run setup, and an animated opening
AI That Never Does the Math
A free OpenRouter model only turns the spoken sentence into items, or says which question was asked and about whom. Names are matched to real sites and workers in code and unknown names are flagged, never guessed. Every number in an answer comes from the same functions the screens use, so an answer cannot disagree with the app, and nothing in the accounts changes until the contractor confirms each card. Risky actions (undo, pay everyone, close a site) get a red card with an explicit confirm button.
Engineering
Local-first SQLite with versioned migrations; money stored as integers in piasters; balances worked out from the records every time instead of being stored. A right-to-left interface in Readex Pro with count-up numbers and entrance motion on the native thread, touch targets of at least 48 points, save toasts with undo, and editing of any record. 248 automated tests (Jest and React Native Testing Library) run the real router, so a screen wired wrong fails a test instead of crashing on the phone.
Built end to end: requirements with the client, the design, the data model, voice and AI, PDF reports and the Android build.

