Skip to content
CoffeeCraft
GitHub

Est. 2025 · One codebase, two roles

Serious coffee.
Serious code.

A full coffee shop in your pocket — customers order and track drinks in real time, managers run the store from an analytics dashboard. All SwiftUI, all Firebase, zero custom backend.

CoffeeCraft home screen with featured drinks in motion

Today’s Menu

  • Real-time orders

    always live

    Firestore snapshot listeners push every status change to the screen the moment it happens — no pull-to-refresh.

  • Atomic wallet

    $0.00 lost

    Top-ups, payments, and refunds all run through db.runTransaction() — the ledger never goes inconsistent.

  • Live delivery tracking

    en route

    Watch your order travel on a MapKit route from the branch to your door, updated in real time.

  • Proof-of-purchase reviews

    verified

    Only customers who completed an order can rate it — every review is backed by a real purchase.

  • Find a branch

    nearby

    CoreLocation-powered branch finder with distances, opening hours, and per-store ordering windows.

  • Four house palettes

    your pick

    Brown, strawberry, matcha, or oreo — a semantic token system switches the whole app's theme at runtime.

Two Sides of the Counter

For customers

Order, pay, and watch it arrive

Browse the menu, customize a drink, pay from an in-app wallet, and follow the courier live on the map — with push notifications that deep-link straight to the order.

Drink customization with sizes and add-ons
Live delivery tracking on a map

For managers

Run the store from your pocket

Accept and advance orders in real time, watch sales analytics roll in, set per-branch ordering hours, and manage the menu — same app, manager role.

Sales analytics dashboard with charts
Per-branch ordering hours configuration

From the Shop Floor

Full drink menu with categories
The menu
Cart with order summary
The cart
In-app wallet with balance and history
The wallet
Order list with live statuses
The orders
Branch finder on a map
The branches
Theme palette picker with four palettes
The palettes

The House Blend

Repository layer

ViewModels never import Firebase — a protocol layer keeps the data source swappable and the views testable.

Four environments

Dev, SIT, UAT, and Prod each get their own Firebase project, switched by build configuration.

Role-aware tabs

Customer and Manager share one codebase — tabs filter by role with no branching in the view hierarchy.

  • Swift
  • SwiftUI
  • MVVM
  • Firebase
  • Firestore
  • FCM
  • MapKit
  • CoreLocation

Care for a cup?

The whole shop is open source — clone it, point it at your own Firebase project, and brew.