# bambang-saputra/venture-creation architecture

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

- Interactive diagram: https://gitdiagram.com/bambang-saputra/venture-creation
- Repository: https://github.com/bambang-saputra/venture-creation

## Overview

Life of Foods is a two-sided Android surplus-food marketplace: consumers discover and reserve surplus food for pickup, while F&B partners record daily leftovers and publish them for sale. The map covers the documented consumer and partner capabilities and the sampled API flows; several controllers and Android screens are represented from the repository tree and README rather than inspected source excerpts, so their internal wiring is kept conservative.

Main entry points: [`api/routes/api.php`](https://github.com/bambang-saputra/venture-creation/blob/main/api/routes/api.php) (REST routes), [`api/config/database.php`](https://github.com/bambang-saputra/venture-creation/blob/main/api/config/database.php) (MySQL data), [`android/app/src/main/java/id/lifeoffoods/LofApp.java`](https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/LofApp.java) (Android application), [`android/app/src/main/java/id/lifeoffoods/data/api/ApiClient.java`](https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/data/api/ApiClient.java) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_android["Android app"]
  node_android_app["Android application<br/>[LofApp.java]"]
  node_login_ui["Sign-in and OTP<br/>[MasukFragment.java]"]
  node_consumer_ui["Consumer screens"]
  node_onboarding_ui["Profile and allergens"]
  node_partner_ui["Partner screens"]
  node_api_client["API client<br/>[ApiClient.java]"]
end

subgraph group_consumer_api["Consumer API"]
  node_auth_api["Authentication<br/>[OtpController.php]"]
  node_listing_api["Browse listings"]
  node_orders_api["Orders and pickup"]
  node_favorites_api["Store favorites"]
  node_profile_api["Profile and allergens"]
end

subgraph group_partner_api["Partner API"]
  node_waste_api["Daily waste log"]
  node_partner_listings["Partner listings"]
  node_partner_store["Store management<br/>[TokoController.php]"]
  node_partner_orders["Partner orders"]
end

subgraph group_shared["Shared backend"]
  node_shared_orders["Order service<br/>[LayananPesanan.php]"]
  node_notifications["Notifications<br/>[Notifikasi.php]"]
  node_api_routes["REST routes<br/>[api.php]"]
  node_database[("MySQL data<br/>[database.php]")]
  node_google_login["Google sign-in"]
end

node_consumer(("Consumer"))
node_partner(("Partner staff"))

node_consumer -->|"uses"| node_android_app
node_partner -->|"uses"| node_android_app
node_android_app -->|"opens"| node_login_ui
node_android_app -->|"opens"| node_consumer_ui
node_android_app -->|"opens"| node_onboarding_ui
node_android_app -->|"opens"| node_partner_ui
node_login_ui -->|"requests"| node_api_client
node_consumer_ui -->|"requests"| node_api_client
node_onboarding_ui -->|"requests"| node_api_client
node_partner_ui -->|"requests"| node_api_client
node_api_client -->|"sends API calls"| node_api_routes
node_api_routes -->|"dispatches"| node_auth_api
node_api_routes -->|"dispatches"| node_google_login
node_api_routes -->|"dispatches"| node_listing_api
node_api_routes -->|"dispatches"| node_orders_api
node_api_routes -->|"dispatches"| node_favorites_api
node_api_routes -->|"dispatches"| node_profile_api
node_api_routes -->|"dispatches"| node_waste_api
node_api_routes -->|"dispatches"| node_partner_listings
node_api_routes -->|"dispatches"| node_partner_store
node_api_routes -->|"dispatches"| node_partner_orders
node_orders_api -->|"creates and cancels"| node_shared_orders
node_orders_api -->|"notifies new order"| node_notifications
node_listing_api -->|"queries listings"| node_database
node_auth_api -->|"stores OTP and users"| node_database
node_orders_api -->|"reads order data"| node_database
node_favorites_api -->|"reads and writes favorites"| node_database
node_profile_api -->|"persists profile data"| node_database
node_waste_api -->|"stores waste records"| node_database
node_partner_listings -->|"manages listings"| node_database
node_partner_store -->|"manages store data"| node_database
node_partner_orders -->|"manages partner orders"| node_database
node_google_login -->|"reads and updates users"| node_database

click node_android_app "https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/LofApp.java"
click node_login_ui "https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/ui/masuk/MasukFragment.java"
click node_consumer_ui "https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/ui/beranda/BerandaFragment.java"
click node_onboarding_ui "https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/ui/onboarding/AlergiFragment.java"
click node_partner_ui "https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/ui/awal/PilihPeranFragment.java"
click node_api_client "https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/data/api/ApiClient.java"
click node_auth_api "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Auth/OtpController.php"
click node_listing_api "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/ListingController.php"
click node_orders_api "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/PesananController.php"
click node_favorites_api "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/FavoritController.php"
click node_profile_api "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/ProfilController.php"
click node_waste_api "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Partner/CatatSisaController.php"
click node_partner_listings "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Partner/ListingMitraController.php"
click node_partner_store "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Partner/TokoController.php"
click node_partner_orders "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Partner/PesananMitraController.php"
click node_shared_orders "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Services/LayananPesanan.php"
click node_notifications "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Services/Notifikasi.php"
click node_api_routes "https://github.com/bambang-saputra/venture-creation/blob/main/api/routes/api.php"
click node_database "https://github.com/bambang-saputra/venture-creation/blob/main/api/config/database.php"
click node_google_login "https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Auth/LoginGoogleController.php"

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_app,node_login_ui,node_consumer_ui,node_onboarding_ui,node_partner_ui,node_api_client toneBlue
class node_auth_api,node_listing_api,node_orders_api,node_favorites_api,node_profile_api toneAmber
class node_waste_api,node_partner_listings,node_partner_store,node_partner_orders toneMint
class node_shared_orders,node_notifications,node_api_routes,node_database,node_google_login toneRose
class node_consumer,node_partner toneIndigo
```

## Components

### Android app

- [Android application](https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/LofApp.java): `android/app/src/main/java/id/lifeoffoods/LofApp.java`
- [Sign-in and OTP](https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/ui/masuk/MasukFragment.java): `android/app/src/main/java/id/lifeoffoods/ui/masuk/MasukFragment.java`
- [Consumer screens](https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/ui/beranda/BerandaFragment.java): `android/app/src/main/java/id/lifeoffoods/ui/beranda/BerandaFragment.java`
- [Profile and allergens](https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/ui/onboarding/AlergiFragment.java): `android/app/src/main/java/id/lifeoffoods/ui/onboarding/AlergiFragment.java`
- [Partner screens](https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/ui/awal/PilihPeranFragment.java): `android/app/src/main/java/id/lifeoffoods/ui/awal/PilihPeranFragment.java`
- [API client](https://github.com/bambang-saputra/venture-creation/blob/main/android/app/src/main/java/id/lifeoffoods/data/api/ApiClient.java): `android/app/src/main/java/id/lifeoffoods/data/api/ApiClient.java`

### Consumer API

- [Authentication](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Auth/OtpController.php): `api/app/Http/Controllers/Auth/OtpController.php`
- [Browse listings](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/ListingController.php): `api/app/Http/Controllers/ListingController.php`
- [Orders and pickup](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/PesananController.php): `api/app/Http/Controllers/PesananController.php`
- [Store favorites](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/FavoritController.php): `api/app/Http/Controllers/FavoritController.php`
- [Profile and allergens](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/ProfilController.php): `api/app/Http/Controllers/ProfilController.php`

### Partner API

- [Daily waste log](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Partner/CatatSisaController.php): `api/app/Http/Controllers/Partner/CatatSisaController.php`
- [Partner listings](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Partner/ListingMitraController.php): `api/app/Http/Controllers/Partner/ListingMitraController.php`
- [Store management](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Partner/TokoController.php): `api/app/Http/Controllers/Partner/TokoController.php`
- [Partner orders](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Partner/PesananMitraController.php): `api/app/Http/Controllers/Partner/PesananMitraController.php`

### Shared backend

- [Order service](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Services/LayananPesanan.php): `api/app/Services/LayananPesanan.php`
- [Notifications](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Services/Notifikasi.php): `api/app/Services/Notifikasi.php`
- [REST routes](https://github.com/bambang-saputra/venture-creation/blob/main/api/routes/api.php): `api/routes/api.php`
- [MySQL data](https://github.com/bambang-saputra/venture-creation/blob/main/api/config/database.php): `api/config/database.php`
- [Google sign-in](https://github.com/bambang-saputra/venture-creation/blob/main/api/app/Http/Controllers/Auth/LoginGoogleController.php): `api/app/Http/Controllers/Auth/LoginGoogleController.php`

### Other components

- **Consumer**
- **Partner staff**

## Connections

- Consumer → Android application: uses
- Partner staff → Android application: uses
- Android application → Sign-in and OTP: opens
- Android application → Consumer screens: opens
- Android application → Profile and allergens: opens
- Android application → Partner screens: opens
- Sign-in and OTP → API client: requests
- Consumer screens → API client: requests
- Profile and allergens → API client: requests
- Partner screens → API client: requests
- API client → REST routes: sends API calls
- REST routes → Authentication: dispatches
- REST routes → Google sign-in: dispatches
- REST routes → Browse listings: dispatches
- REST routes → Orders and pickup: dispatches
- REST routes → Store favorites: dispatches
- REST routes → Profile and allergens: dispatches
- REST routes → Daily waste log: dispatches
- REST routes → Partner listings: dispatches
- REST routes → Store management: dispatches
- REST routes → Partner orders: dispatches
- Orders and pickup → Order service: creates and cancels
- Orders and pickup → Notifications: notifies new order
- Browse listings → MySQL data: queries listings
- Authentication → MySQL data: stores OTP and users
- Orders and pickup → MySQL data: reads order data
- Store favorites → MySQL data: reads and writes favorites
- Profile and allergens → MySQL data: persists profile data
- Daily waste log → MySQL data: stores waste records
- Partner listings → MySQL data: manages listings
- Store management → MySQL data: manages store data
- Partner orders → MySQL data: manages partner orders
- Google sign-in → MySQL data: reads and updates users
