Full Stack Android App
Alban Osama
Alban Osama (ألبان أسامة) is a milk and dairy reservation app I designed, built, and shipped solo for the dairy section of my father's supermarket in Egypt. It replaced phone and WhatsApp orders that were becoming impossible to track as the dairy side scaled.
Customers sign in with Google and wait for admin approval before their first booking - that manual gate keeps the customer list tied to actual neighborhood households instead of random signups. Once approved they browse the day's booking session, reserve multiple products at once with per product quantities, receive counter offers when supply is tight (approve or reject with one tap), and chat directly with the shop inside the app. Push notifications land on every booking state change (under review, approved, counter offered, delivered). The whole customer experience is Arabic right to left.
On the admin side, admins sign in with username and password, open and close booking sessions, approve or reject pending customer signups, review the booking queue, approve or reject requests, send counter offers, manage suppliers and supply cycles, generate per cycle PDF reports with PDFKit, and manage user roles. Three role levels (customer, standard admin, super admin) gate the admin surface. A custom 2 AM Egypt time day boundary matches how the physical shop actually cycles, instead of UTC midnight.
On the client: Flutter + Riverpod + GoRouter, Google Sign-In, Firebase FCM, and Sentry for crash reporting. On the server: Fastify + TypeScript, PostgreSQL through Drizzle ORM, WebSockets for live chat, node cron for session automation, JWT (HS256) + Google ID token verification + bcrypt for admin passwords, Pino + Better Stack for logs, plus Helmet and per route rate limiting. The backend exposes an OpenAPI documented REST API with around 30 endpoints grouped across auth, bookings, admin, chat, deliveries, and suppliers. Infrastructure runs as Docker containers on a Hetzner VPS fronted by Cloudflare, with GitHub Actions building the APK and AAB on every push to main and a separate workflow that deploys the web build. Published to Google Play in April 2026 after months of closed testing with real customers.