# singhgauravlinux-coder/bakery-android architecture

> Architecture diagram of the GitHub repository singhgauravlinux-coder/bakery-android, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/singhgauravlinux-coder/bakery-android
- Repository: https://github.com/singhgauravlinux-coder/bakery-android

## Overview

Crumb & Ember is a bakery-commerce platform with an Android storefront client and a gateway-fronted set of domain services. The principal customer journey is browse products, manage a cart, submit an order, pay, and review order history; the README also documents promotions, inventory, reviews, search, recommendations, baking schedules, loyalty, consent, localization, currency, and notifications. The tree and excerpts establish the client API surface, gateway proxying, order payment verification, invoice order lookup, and queued notification dispatch; other service links are limited to documented gateway routing rather than inferred internal calls.

Main entry points: [`services/api-gateway/server.js`](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/api-gateway/server.js) (API gateway), [`services/order-service/server.js`](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/order-service/server.js) (Order lifecycle), [`android-app/app/src/main/java/com/crumbandember/app/MainActivity.kt`](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/android-app/app/src/main/java/com/crumbandember/app/MainActivity.kt) (Android app), [`services/invoice-service/server.js`](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/invoice-service/server.js) (Invoicing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mobile["Mobile storefront"]
  node_android["Android app<br/>[MainActivity.kt]"]
  node_navigation["Screen navigation<br/>[NavGraph.kt]"]
  node_mobileapi["Gateway API client<br/>[ApiService.kt]"]
end

subgraph group_commerce["Commerce services"]
  node_auth["Authentication<br/>[server.js]"]
  node_catalog["Product catalog<br/>[server.js]"]
  node_cart["Cart<br/>[server.js]"]
  node_inventory["Inventory<br/>[server.js]"]
  node_pricing["Pricing<br/>[server.js]"]
  node_promotion["Promotions<br/>[server.js]"]
end

subgraph group_checkout["Order and fulfilment"]
  node_orders["Order lifecycle<br/>[server.js]"]
  node_payments["Payments<br/>[server.js]"]
  node_delivery["Delivery<br/>[server.js]"]
  node_invoice["Invoicing<br/>[server.js]"]
  node_notification["Notification API<br/>[server.js]"]
  node_notifyqueue["Notification queue<br/>[queue.js]"]
  node_notifyworker["Notification worker<br/>[worker.js]"]
end

subgraph group_discovery["Storefront capabilities"]
  node_reviews["Product reviews<br/>[server.js]"]
  node_search["Search<br/>[server.js]"]
  node_recommend["Recommendations<br/>[server.js]"]
  node_baking["Bake schedule<br/>[server.js]"]
  node_loyalty["Loyalty<br/>[server.js]"]
  node_consent["User consent<br/>[server.js]"]
end

subgraph group_platform["Platform services"]
  node_gateway["API gateway<br/>[server.js]"]
  node_analytics["Analytics<br/>[server.js]"]
  node_currency["Currency<br/>[server.js]"]
  node_language["Localization<br/>[server.js]"]
  node_redis[("Redis carts")]
  node_postgres[("PostgreSQL")]
end

node_shopper(("Shopper"))

node_shopper -->|"uses"| node_android
node_android -->|"opens screens"| node_navigation
node_android -->|"requests data"| node_mobileapi
node_mobileapi -->|"calls gateway"| node_gateway
node_gateway -->|"proxies auth"| node_auth
node_gateway -->|"proxies catalog"| node_catalog
node_gateway -->|"proxies cart"| node_cart
node_gateway -->|"proxies inventory"| node_inventory
node_gateway -->|"proxies pricing"| node_pricing
node_gateway -->|"proxies promotions"| node_promotion
node_gateway -->|"proxies orders"| node_orders
node_gateway -->|"proxies payments"| node_payments
node_gateway -->|"proxies delivery"| node_delivery
node_gateway -->|"proxies invoices"| node_invoice
node_gateway -->|"proxies notifications"| node_notification
node_gateway -->|"proxies reviews"| node_reviews
node_gateway -->|"proxies search"| node_search
node_gateway -->|"proxies recommendations"| node_recommend
node_gateway -->|"proxies schedule"| node_baking
node_gateway -->|"proxies loyalty"| node_loyalty
node_gateway -->|"proxies consent"| node_consent
node_gateway -->|"proxies analytics"| node_analytics
node_gateway -->|"proxies currency"| node_currency
node_gateway -->|"proxies language"| node_language
node_orders -->|"verifies payment"| node_payments
node_invoice -->|"fetches order"| node_orders
node_notification -->|"enqueues jobs"| node_notifyqueue
node_notifyworker -->|"claims jobs"| node_notifyqueue
node_cart -->|"stores carts"| node_redis
node_catalog -->|"reads products"| node_postgres
node_orders -->|"stores orders"| node_postgres
node_payments -->|"stores payments"| node_postgres
node_invoice -->|"stores invoices"| node_postgres

click node_android "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/android-app/app/src/main/java/com/crumbandember/app/MainActivity.kt"
click node_navigation "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/android-app/app/src/main/java/com/crumbandember/app/ui/navigation/NavGraph.kt"
click node_mobileapi "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/android-app/app/src/main/java/com/crumbandember/app/data/api/ApiService.kt"
click node_gateway "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/api-gateway/server.js"
click node_auth "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/auth-service/server.js"
click node_catalog "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/product-catalog-service/server.js"
click node_cart "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/cart-service/server.js"
click node_inventory "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/inventory-service/server.js"
click node_pricing "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/pricing-service/server.js"
click node_promotion "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/promotion-service/server.js"
click node_orders "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/order-service/server.js"
click node_payments "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/payment-service/server.js"
click node_delivery "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/delivery-service/server.js"
click node_invoice "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/invoice-service/server.js"
click node_notification "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/notification-service/server.js"
click node_notifyqueue "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/notification-service/lib/queue.js"
click node_notifyworker "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/notification-service/worker.js"
click node_reviews "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/review-service/server.js"
click node_search "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/search-service/server.js"
click node_recommend "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/recommendation-service/server.js"
click node_baking "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/baking-schedule-service/server.js"
click node_loyalty "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/loyalty-service/server.js"
click node_consent "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/consent-service/server.js"
click node_analytics "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/analytics-service/server.js"
click node_currency "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/currency-service/server.js"
click node_language "https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/language-service/server.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_android,node_navigation,node_mobileapi toneBlue
class node_auth,node_catalog,node_cart,node_inventory,node_pricing,node_promotion toneAmber
class node_orders,node_payments,node_delivery,node_invoice,node_notification,node_notifyqueue,node_notifyworker toneMint
class node_reviews,node_search,node_recommend,node_baking,node_loyalty,node_consent toneRose
class node_gateway,node_analytics,node_currency,node_language,node_redis,node_postgres,node_shopper toneIndigo
```

## Components

### Mobile storefront

- [Android app](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/android-app/app/src/main/java/com/crumbandember/app/MainActivity.kt): `android-app/app/src/main/java/com/crumbandember/app/MainActivity.kt`
- [Screen navigation](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/android-app/app/src/main/java/com/crumbandember/app/ui/navigation/NavGraph.kt): `android-app/app/src/main/java/com/crumbandember/app/ui/navigation/NavGraph.kt`
- [Gateway API client](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/android-app/app/src/main/java/com/crumbandember/app/data/api/ApiService.kt): `android-app/app/src/main/java/com/crumbandember/app/data/api/ApiService.kt`

### Commerce services

- [Authentication](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/auth-service/server.js): `services/auth-service/server.js`
- [Product catalog](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/product-catalog-service/server.js): `services/product-catalog-service/server.js`
- [Cart](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/cart-service/server.js): `services/cart-service/server.js`
- [Inventory](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/inventory-service/server.js): `services/inventory-service/server.js`
- [Pricing](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/pricing-service/server.js): `services/pricing-service/server.js`
- [Promotions](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/promotion-service/server.js): `services/promotion-service/server.js`

### Order and fulfilment

- [Order lifecycle](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/order-service/server.js): `services/order-service/server.js`
- [Payments](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/payment-service/server.js): `services/payment-service/server.js`
- [Delivery](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/delivery-service/server.js): `services/delivery-service/server.js`
- [Invoicing](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/invoice-service/server.js): `services/invoice-service/server.js`
- [Notification API](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/notification-service/server.js): `services/notification-service/server.js`
- [Notification queue](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/notification-service/lib/queue.js): `services/notification-service/lib/queue.js`
- [Notification worker](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/notification-service/worker.js): `services/notification-service/worker.js`

### Storefront capabilities

- [Product reviews](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/review-service/server.js): `services/review-service/server.js`
- [Search](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/search-service/server.js): `services/search-service/server.js`
- [Recommendations](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/recommendation-service/server.js): `services/recommendation-service/server.js`
- [Bake schedule](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/baking-schedule-service/server.js): `services/baking-schedule-service/server.js`
- [Loyalty](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/loyalty-service/server.js): `services/loyalty-service/server.js`
- [User consent](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/consent-service/server.js): `services/consent-service/server.js`

### Platform services

- [API gateway](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/api-gateway/server.js): `services/api-gateway/server.js`
- [Analytics](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/analytics-service/server.js): `services/analytics-service/server.js`
- [Currency](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/currency-service/server.js): `services/currency-service/server.js`
- [Localization](https://github.com/singhgauravlinux-coder/bakery-android/blob/main/services/language-service/server.js): `services/language-service/server.js`
- **Redis carts**
- **PostgreSQL**

### Other components

- **Shopper**

## Connections

- Shopper → Android app: uses
- Android app → Screen navigation: opens screens
- Android app → Gateway API client: requests data
- Gateway API client → API gateway: calls gateway
- API gateway → Authentication: proxies auth
- API gateway → Product catalog: proxies catalog
- API gateway → Cart: proxies cart
- API gateway → Inventory: proxies inventory
- API gateway → Pricing: proxies pricing
- API gateway → Promotions: proxies promotions
- API gateway → Order lifecycle: proxies orders
- API gateway → Payments: proxies payments
- API gateway → Delivery: proxies delivery
- API gateway → Invoicing: proxies invoices
- API gateway → Notification API: proxies notifications
- API gateway → Product reviews: proxies reviews
- API gateway → Search: proxies search
- API gateway → Recommendations: proxies recommendations
- API gateway → Bake schedule: proxies schedule
- API gateway → Loyalty: proxies loyalty
- API gateway → User consent: proxies consent
- API gateway → Analytics: proxies analytics
- API gateway → Currency: proxies currency
- API gateway → Localization: proxies language
- Order lifecycle → Payments: verifies payment
- Invoicing → Order lifecycle: fetches order
- Notification API → Notification queue: enqueues jobs
- Notification worker → Notification queue: claims jobs
- Cart → Redis carts: stores carts
- Product catalog → PostgreSQL: reads products
- Order lifecycle → PostgreSQL: stores orders
- Payments → PostgreSQL: stores payments
- Invoicing → PostgreSQL: stores invoices
