Ground Booking
Two-sided sports-ground booking — partner and player apps
A two-sided Flutter marketplace for sports-ground bookings: a partner app where venue owners manage grounds, weekly slot templates and incoming reservations, and a player app for browsing grounds, picking hourly slots on a calendar and tracking payment status — both sharing one Firestore backend.



Both repositories are private. The recurring weekly slot model, the six-state booking pipeline and the manual payment check (deposit plus screenshot, no gateway API) are explained below.
About this project
Ground Booking is two Flutter apps reading and writing the same Firestore backend in real time. Players browse a live-updating, paginated feed of grounds, open a ground's detail page — image carousel, price per hour, supported sports, floor area, WhatsApp/call buttons — and book through a calendar-plus-hourly-slot screen: pick a date on a table calendar, tap open hour chips (24 slots a day, in fixed bands like "6pm-7pm"), and submit a reservation.
Each ground stores its own recurring weekly availability as a week-slots model — a separate list of open hour-indices for every day of the week, so an owner sets the schedule once and it repeats. Grounds carry a real domain vocabulary: 11 sport types (cricket, football, basketball, volleyball, badminton, tennis, hockey, kabaddi, handball, table tennis, squash), an indoor/outdoor ground type, and a pitch type (turf, mat, cement, grass). A ground can also have more than one linked partner account with an owner/admin role tag, and the partner app resolves which ground a signed-in partner manages from that link. On the partner side, incoming bookings are triaged in a status-tabbed dashboard — Reserved, Pending, Approved, Completed — each tab a live, ground-scoped Firestore query, and a booking's full lifecycle runs through six states (Reserved → Pending → Approved → Playing → Completed/Cancelled).
Payment is a manual, verify-by-screenshot flow rather than an integrated gateway: a booking records a token-money deposit, an optional cash flag, a bank/EasyPaisa payment-method reference and an uploaded payment-proof screenshot the venue owner reconciles by hand. Both apps authenticate with Firebase phone/OTP verification (no email/password path) and run on GetX for state and navigation.
Key features
- Live, paginated Firestore feed of grounds with favorites (heart-toggle) and a game-type/ground-type filter screen
- Ground detail: image carousel, price/hr, 11 supported sports, floor area, WhatsApp and call buttons
- Booking flow: table calendar plus 24 hourly-slot chips per day, driven by a per-ground weekly recurring slot template
- Manual payment tracking per booking: token-money deposit, cash flag, bank/EasyPaisa reference and an uploaded payment-proof screenshot — no payment-gateway API
- Partner dashboard: status-tabbed live booking queries (Reserved/Pending/Approved/Completed), scoped per ground
- Multi-partner ground ownership — a ground can have more than one linked partner account with an owner/admin role tag
- Firebase phone/OTP authentication on both apps
More in Marketplace & Booking

Quick Rent
A rental-only listings platform rebuilt around a branch-based, role-scoped backend
A branch-managed rental marketplace connecting tenants with branch offices — a Next.js web platform plus a Flutter mobile app sharing one Supabase backend, with real-time messaging, commission tracking and full audit logging behind role-scoped admin and branch panels.



StarShare
Creator-economy platform — fans commission personalized videos from celebrities, celebrity and admin apps
A three-app creator-economy platform: a fan app where users commission a personalized video message from a celebrity for a specific occasion and pay through an integrated bank payment gateway, a celebrity app for recording and delivering the video and managing bank withdrawals, and an admin console with a 14-permission role system — all three sharing one Firestore backend.
~/sherazi.dev$./say-hello
Say hello.
Questions about a case study, one of the packages, AI tooling or Flutter in general are always welcome.
// or browse the packages on pub.dev(opens in a new tab)