Zubair Shaik

Houston · Computer Engineering (sophomore) · University of Houston

I figure out what an app should do, then I build it.

My Projects

ManzilTrackerLive

A Qur'an memorization tracker — on the web and the App Store.

A tracker for Qur'an memorization. Students juggle new verses and older ones they have to keep reviewing; the app organizes both and gives teachers, parents, and students each their own screen. I planned it, built it with AI, and handled App Store review myself.

The ManzilTracker home page, with separate sections for admins, teachers, and parents

Tech · React + TypeScript, Vite, Tailwind, Supabase (Postgres, auth, realtime, Edge Functions), Capacitor for iOS, offline PWA

App Store · manzilapp.io · Code on GitHub · Write-up

SchoolTrackLive

A school management web app for small K–12 schools.

One place for a small school to run attendance, grades, enrollment, billing, and parent messages. It's on a free hosting tier, so a school pays nothing. I chose the features and the access rules, and I caught the homepage and the privacy policy saying different things about what data is stored, then fixed it.

The SchoolTrack home page with an example admin dashboard showing 248 students and 94% attendance

Tech · Web app, Firebase (free tier), role-based access

schooltrack-website.vercel.app · Code on GitHub · Write-up

WhatsApp Restaurant Order BotDeployed

A whole ordering system for a restaurant that runs over WhatsApp.

A customer texts their order to the restaurant's WhatsApp number. Claude reads the food items out of the message, a receipt prints in the kitchen, the customer gets a confirmation, and the order lands on a live web page that auto-prints. It runs on a Linux server, and the owner links WhatsApp once.

The WhatsApp order flow: a customer texts an order and the bot replies Order received, sent to the kitchen

Tech · Node.js, whatsapp-web.js, Claude Haiku, Express, node-thermal-printer, PM2 + systemd, Ubuntu

Read the write-up

HifzAIIn development

An on-device AI coach for Qur'an memorization — a working prototype.

"Hifz" means memorizing the Qur'an word for word. Students have to recite what they've memorized to a teacher so mistakes get caught, and a teacher isn't always free. HifzAI listens while you recite and marks each word green or red, so you can practice alone between lessons. The speech recognition runs on the iPhone with a Core ML model, so nothing gets uploaded. It's written in Swift and UIKit. The first version was a web app that I rebuilt as a native screen.

The HifzAI recitation screen: a fully-vowelled Qur'an verse where recited words are highlighted green, a likely mistake is flagged red, and upcoming words are grey

Tech · Swift, UIKit, AVFoundation, Core ML (FastConformer), Apple Neural Engine · prototyped in TypeScript/React + Capacitor

Read the write-up

Running a business

I run On The Spot Auto Spa, a mobile car-detailing business I started in 2025. I drive to the customer. It has regular clients across Houston, Spring, and The Woodlands, and I handle the bookings, pricing, supplies, and the detailing myself, around a full class schedule. I also teach weekday classes for kids at a community center.

More on the business

Writing

New here? The WhatsApp order bot write-up is a good place to start.

HifzAI: an on-device coach for Qur'an memorization

In development — a working prototype, not a finished app.

First, some background. "Hifz" means memorizing the Qur'an, the whole book, word for word. Someone who has finished is called a hafiz. Memorizing it the first time is one thing. Keeping all of it is another. Students recite what they've memorized back to a teacher or parent on a set schedule so mistakes get caught: a wrong word, words in the wrong order, or a wrong harakat, which is the vowel mark that changes how an Arabic word is pronounced.

The problem is that a teacher or parent isn't always free to sit and listen. HifzAI is an iPhone app a student can use for that on their own between lessons. You recite, and the app follows along word by word and colors each one as you go: green when it heard the word correctly, red when it thinks you skipped a word, said the wrong one, or got the harakat wrong. It doesn't replace a teacher. The feedback isn't accurate enough for that yet, and it's meant for practice between lessons, not something to lean on.

Apps like Tarteel already do a version of this, but they send your recitation to a cloud service. I wanted the audio to never leave the phone, so all the speech recognition runs on the device: a FastConformer model trained on Qur'anic Arabic, converted to Core ML so it runs on Apple's Neural Engine. It doesn't need an account, a subscription, or a paid API for the speech part.

The app records from the mic with AVFoundation, converts the audio into the format the model expects, and feeds it in small streaming chunks so the colors update while you're still reciting. The model outputs Arabic text with the vowel marks included, and the app lines that up against the expected ayah.

Some of it has been hard. Getting a speech model to run on a phone with little enough delay that the feedback feels immediate took a while. So did keeping the Arabic vowel marks through the whole process instead of dropping them somewhere. The trickiest part is telling a genuinely wrong word apart from a correct word said with the wrong vowel, without marking good recitation as a mistake. It also has to handle different voices, accents, microphones, and reciting speeds. The first version was a web app wrapped in Capacitor, but the recitation screen kept freezing under WebKit, so I rebuilt that part natively in Swift and UIKit.

Right now it works for a couple of short surahs, Al-Fātiḥah and Al-Ikhlāṣ, which is enough to show the whole thing works. The word-following and the green and red marking are solid. The harakat and pronunciation checks are in there but experimental, and I don't trust them yet. It needs a lot more testing with different reciters, accents, background noise, and actual iPhones before I would. After that I want to add the rest of the 114 surahs, cut the delay further, make the vowel and tajwīd checks more reliable, and build the planning side: scheduling revision, telling a student what to go over, and tracking the words they keep missing.

A WhatsApp bot that takes restaurant orders

I built a WhatsApp ordering system for a restaurant. A customer messages their order to the restaurant's number, and a few seconds later it prints in the kitchen and the customer gets a message back confirming it. Nobody has to install anything, since everyone already has WhatsApp.

When a message arrives, the bot sends the text to Claude's Haiku model to work out what was ordered. This is harder than it looks. People write orders in different languages, misspell things, and start with "hi, good evening" before getting to the food. If the Claude request fails for any reason, a simpler parser takes over so the order isn't lost. Once the items are worked out, the order prints on a thermal printer in the kitchen, gets saved, and appears on a web page the kitchen keeps open. That page refreshes on its own and prints each new order as it comes in.

The orders page: a table of incoming WhatsApp orders with time, phone, the parsed items, and a Print button on each rowThe orders page the kitchen keeps open. A free-text message like “2 brisket, 1 steak, 20 hot honey wings” comes through as clean line items.

A kitchen receipt generated from a WhatsApp order, with the restaurant name, order number, items, and a Print Receipt buttonEach order opens a printable kitchen receipt.

Most of the effort went into making it reliable. It sits on a small Linux server so it stays up whether or not my laptop is on. WhatsApp normally makes you re-scan a QR code every so often to stay linked, so I save and restore the session and the owner only scans it once. The bot also gets a lot of messages it should ignore: group chats, forwards, the same order sent twice, stickers, voice notes. Those all have to be dropped cleanly instead of crashing it. Printing needed its own fix. I had the orders page print to whatever USB printer is plugged into the kitchen computer, so the restaurant didn't have to set anything up.

It's built with Node.js and whatsapp-web.js for the WhatsApp side, Claude Haiku for reading the orders, Express for the orders, receipt, and settings pages, node-thermal-printer for the printer, and PM2 with systemd to keep it running. It's deployed on an Ubuntu server.

What "I used AI to build it" actually means

People assume building with AI means typing "make me an app" and waiting. That wasn't my experience.

The model writes code quickly, but it has no idea what the product is supposed to be. It doesn't know a Qur'an teacher tracks a few different things per student, or that a parent should never see another family's child. It doesn't know the homepage and the privacy policy have to say the same thing about what data is stored. Those calls were mine, and I had to write them down clearly enough to build from.

Most of the work happened before any code got written. I had to decide how each feature behaves, who can see what, and what the app does in the odd cases. When I was vague about that, the build came back wrong, and re-prompting the model didn't fix it as fast as just thinking it through would have.

I'll keep posting notes here as I build more.

A privacy policy that didn't match the homepage

While I was building SchoolTrack, I noticed a problem that had nothing to do with code. The homepage told schools their data would sync and be backed up to the cloud. The privacy policy didn't mention storing that data anywhere. Both pages were describing the same system and they didn't match.

Schools hold kids' names, grades, attendance, and payment details, so a mismatch like that matters. Anyone comparing the two pages before signing up would spot it, and they'd be right to hesitate.

I rewrote the privacy policy so it described what the app stores, where it's kept, and how it's encrypted. Then I went through the marketing copy and checked that every claim on it was true.

My first App Store submission

ManzilTracker was the first thing I ever put on the App Store, and I did it alone as a college freshman.

I decided to keep the first version small, with only what the app needed to be useful. Less code meant less to explain in review and less that could go wrong. I could add the rest once it was live.

The review itself is a separate step from building the app, and I hadn't thought about it much. A real person checks the app on their own timeline and can reject it for reasons that have nothing to do with whether the code runs. Writing clear notes for that reviewer helped. I explained what each of the three sign-in types is for, since a teacher login and a parent login are meant to look different.

Why ManzilTracker has three separate logins

In a class memorizing the Qur'an, three people follow one student's progress, and each of them needs something different.

  • The student marks what they practiced that day.
  • The teacher assigns new work, checks what was done, and moves the student along.
  • The parent just wants to see how it's going, without being able to change anything.

One screen for all three would have been simpler to build. It also would have been confusing to use. Instead each role gets its own home screen, with rules about who can change what. A parent can look but not edit. A teacher never lands on the parent's view by accident.

Working out that split took the most thought. The build was fairly mechanical after that.

Running a car-detailing business between classes

In 2025 I started On The Spot Auto Spa, a mobile car-detailing business. I drive to the customer. It's grown to regular clients across Houston, Spring, and The Woodlands, mostly through Nextdoor and word of mouth.

I handle all of it myself: scheduling, pricing, invoices, supplies, and the detailing, on top of a full class schedule. Most of what I've learned from it has nothing to do with cars. People notice whether you show up when you said you would, and a job you do badly stays with a customer much longer than a good one.