Skip to content
Back to projects

Full Stack Android App

Alban Osama

FlutterRiverpodGoRouterTypeScriptFastifyPostgreSQLDrizzle ORMFirebase FCMWebSocketsPDFKitDockerHetznerGitHub Actions

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.

Sign in with Google, or admin login
Customer home with live session status
My bookings with approval and delivery status
Admin today view with live session counters
Admin records grouped by day
Supplier cycles with per supplier PDF reports
Product catalog management