Inspiration

Small Greek producers make incredible goods, but many struggle to reach retailers beyond their region. Merchants, meanwhile, want authentic stock without middlemen, cold emails, or spreadsheets. GrekoGourmet was born from that gap: help merchants discover, evaluate, and contact producers quickly, while giving producers a simple way to present their catalog.

What it does

A role-aware B2B marketplace: Producers manage profiles and product listings; merchants browse, search, and paginate through the catalog, then start a conversation when they’re interested. Push notifications keep both sides in the loop. A subscription “gate” unlocks full merchant access once the network reaches critical mass

How we built it

Platform & UI: Android with a modern, reactive UI layer. The app is fully state-driven, so screen content always reflects current authentication, role, and entitlement. Backend: Firebase Authentication for sign-in, Firestore for users/products, and Cloud Messaging for push. Monetization: RevenueCat coordinates the subscription and entitlement checks with Google Play Billing. State management: Coroutines and Flows power reactive streams for connectivity, products, user profiles, and entitlement changes. Navigation: A single flow coordinator handles transitions from splash → onboarding/terms → login → main, based on auth and first-run flags. Data loading: Pagination for the global catalog, direct loads for a producer’s own products

Challenges we ran into

Stale async results overwriting new state After switching roles (producer ↔ merchant), older requests sometimes returned late and replaced the latest list. Fix: Tag each request with an “owner key” (e.g., “merchant” or “producer:{id}”) and ignore callbacks that don’t match the current owner. Crucially, always end the loading state even when ignoring stale data, so the UI never deadlocks. Losing pagination when coming back from other screens Clearing data on every visit reset the list, forcing users back to page one. Fix: Clear and reload only when the data source truly changes (different user or role). Navigating away and back preserves pages and scroll. Notification permission and settings sync (Android 13+) The toggle could drift from system reality after users visited system settings. Fix: Request permission with the proper flow, and re-read notification state on app resume so the switch stays truthful. Subscription UX polish After purchase, users still saw a “manage” path that led to a stale screen. Fix: Auto-dismiss the paywall when the entitlement flips, hide the manage button when active, or point “Manage” directly to Play Store Subscriptions. When the “gate” is closed, hide the entire subscription segment to reduce noise. Gating logic and feature visibility Showing subscription controls when the catalog was below the threshold created confusion. Fix: If gateEnabled is false, hide the subscription section entirely; show it only when it’s actionable.

Accomplishments that we're proud of

The app on PlayStore

What we learned

Guard every async with ownership tokens; otherwise late callbacks will corrupt state. Separate “when to clear” from “when to fetch.” Clearing too often is worse than stale data because it destroys user context (pagination, scroll). Reactive UIs are powerful—but lifecycle edges (like returning from Settings) need explicit synchronization. Keep monetization native and predictable. Let the Play Store handle cancellations; it’s clearer and avoids back-stack surprises. Hide what isn’t actionable. Reducing visual noise improves comprehension and reduces bugs.

What's next for GrekoGourmet

Producers get a clean storefront for their goods; merchants get a faster path from discovery to contact. Planned improvements: Soft refresh that merges new items without resetting pages. Richer filters (region, category, ratings) and saved searches. Lightweight analytics for producers (views, contact rate). Enhanced offline support and more comprehensive testing. GrekoGourmet’s north star is simple: remove friction so authentic Greek products move from makers to store shelves with confidence and speed.

Built With

Share this project:

Updates