# p2u11/konbini-client architecture

> Architecture diagram of the GitHub repository p2u11/konbini-client, 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/p2u11/konbini-client
- Repository: https://github.com/p2u11/konbini-client

## Overview

Konbini is an Android app-store client: users browse or search the catalog, open an app’s detail and version information, then download and install it. The tree and sampled code also show category browsing, installed-app/update views, login/profile/settings screens, and update notifications. UI activities coordinate catalog access through API/network code; the download service handles APK transfer and installation. Several secondary screens and API methods were not sampled, so their internal wiring is intentionally left unspecified.

Main entry points: [`app/src/main/java/io/github/konbini/market/net/KonbiniApi.java`](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/net/KonbiniApi.java) (Store API client), [`app/src/main/java/io/github/konbini/market/ui/CategoryListActivity.java`](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/CategoryListActivity.java) (Category browser), [`app/src/main/java/io/github/konbini/market/ui/AppDetailActivity.java`](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/AppDetailActivity.java) (App details), [`app/src/main/java/io/github/konbini/market/net/Http.java`](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/net/Http.java) (HTTP transport)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Store browsing"]
  node_main["Home and promos<br/>[MainActivity.java]"]
  node_categories["Category browser"]
  node_categoryapps["Category apps"]
  node_search["App search"]
  node_detail["App details"]
end

subgraph group_account["Account and settings"]
  node_login["Login<br/>[LoginActivity.java]"]
  node_profile["Profile"]
  node_userprofile["User profile"]
  node_settings["Settings"]
end

subgraph group_runtime["Downloads and updates"]
  node_downloads["Downloads view"]
  node_downloadservice["APK downloader"]
  node_updatecheck["Update checker"]
end

subgraph group_internals["API and models"]
  node_api["Store API client<br/>[KonbiniApi.java]"]
  node_http["HTTP transport<br/>[Http.java]"]
  node_appmodel["App and versions<br/>[App.java]"]
  node_appitem["Catalog item model<br/>[AppItem.java]"]
  node_prefs["Preferences and auth<br/>[Prefs.java]"]
end

node_user(("Android user"))
node_store{{"Konbini server"}}
node_installer{{"Android package installer"}}

node_user -->|"opens"| node_main
node_user -->|"browses"| node_categories
node_user -->|"searches"| node_search
node_user -->|"signs in"| node_login
node_user -->|"configures"| node_settings
node_main -->|"loads catalog"| node_api
node_search -->|"searches apps"| node_api
node_categories -->|"loads apps"| node_api
node_categories -->|"opens category"| node_categoryapps
node_search -->|"opens result"| node_detail
node_categoryapps -->|"opens app"| node_detail
node_detail -->|"loads app"| node_api
node_api -->|"sends requests"| node_http
node_http -->|"requests data"| node_store
node_store -->|"returns data"| node_http
node_api -->|"parses app"| node_appmodel
node_categories -->|"builds rows"| node_appitem
node_detail -->|"starts download"| node_downloadservice
node_downloadservice -->|"fetches APK"| node_store
node_downloadservice -->|"launches install"| node_installer
node_user -->|"views downloads"| node_downloads
node_downloads -->|"loads installed catalog"| node_store
node_updatecheck -->|"checks versions"| node_http
node_updatecheck -->|"notifies updates"| node_user
node_login -->|"saves auth"| node_prefs
node_settings -->|"stores preferences"| node_prefs
node_profile -->|"reads profile state"| node_prefs
node_userprofile -.->|"loads profile"| node_store

click node_main "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/MainActivity.java"
click node_categories "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/CategoryListActivity.java"
click node_categoryapps "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/CategoryAppsActivity.java"
click node_search "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/SearchActivity.java"
click node_detail "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/AppDetailActivity.java"
click node_downloads "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/DownloadsActivity.java"
click node_downloadservice "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/service/DownloadService.java"
click node_updatecheck "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/service/UpdateCheckService.java"
click node_login "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/LoginActivity.java"
click node_profile "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/ProfileActivity.java"
click node_userprofile "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/UserProfileActivity.java"
click node_settings "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/SettingsActivity.java"
click node_api "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/net/KonbiniApi.java"
click node_http "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/net/Http.java"
click node_appmodel "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/api/App.java"
click node_appitem "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/model/AppItem.java"
click node_prefs "https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/util/Prefs.java"

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_main,node_categories,node_categoryapps,node_search,node_detail,node_user toneBlue
class node_login,node_profile,node_userprofile,node_settings toneAmber
class node_downloads,node_downloadservice,node_updatecheck,node_store toneMint
class node_api,node_http,node_appmodel,node_appitem,node_prefs toneRose
class node_installer toneIndigo
```

## Components

### Store browsing

- [Home and promos](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/MainActivity.java): `app/src/main/java/io/github/konbini/market/ui/MainActivity.java`
- [Category browser](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/CategoryListActivity.java): `app/src/main/java/io/github/konbini/market/ui/CategoryListActivity.java`
- [Category apps](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/CategoryAppsActivity.java): `app/src/main/java/io/github/konbini/market/ui/CategoryAppsActivity.java`
- [App search](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/SearchActivity.java): `app/src/main/java/io/github/konbini/market/ui/SearchActivity.java`
- [App details](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/AppDetailActivity.java): `app/src/main/java/io/github/konbini/market/ui/AppDetailActivity.java`

### Account and settings

- [Login](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/LoginActivity.java): `app/src/main/java/io/github/konbini/market/ui/LoginActivity.java`
- [Profile](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/ProfileActivity.java): `app/src/main/java/io/github/konbini/market/ui/ProfileActivity.java`
- [User profile](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/UserProfileActivity.java): `app/src/main/java/io/github/konbini/market/ui/UserProfileActivity.java`
- [Settings](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/SettingsActivity.java): `app/src/main/java/io/github/konbini/market/ui/SettingsActivity.java`

### Downloads and updates

- [Downloads view](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/ui/DownloadsActivity.java): `app/src/main/java/io/github/konbini/market/ui/DownloadsActivity.java`
- [APK downloader](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/service/DownloadService.java): `app/src/main/java/io/github/konbini/market/service/DownloadService.java`
- [Update checker](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/service/UpdateCheckService.java): `app/src/main/java/io/github/konbini/market/service/UpdateCheckService.java`

### API and models

- [Store API client](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/net/KonbiniApi.java): `app/src/main/java/io/github/konbini/market/net/KonbiniApi.java`
- [HTTP transport](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/net/Http.java): `app/src/main/java/io/github/konbini/market/net/Http.java`
- [App and versions](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/api/App.java): `app/src/main/java/io/github/konbini/market/api/App.java`
- [Catalog item model](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/model/AppItem.java): `app/src/main/java/io/github/konbini/market/model/AppItem.java`
- [Preferences and auth](https://github.com/p2u11/konbini-client/blob/master/app/src/main/java/io/github/konbini/market/util/Prefs.java): `app/src/main/java/io/github/konbini/market/util/Prefs.java`

### Other components

- **Android user**
- **Konbini server**
- **Android package installer**

## Connections

- Android user → Home and promos: opens
- Android user → Category browser: browses
- Android user → App search: searches
- Android user → Login: signs in
- Android user → Settings: configures
- Home and promos → Store API client: loads catalog
- App search → Store API client: searches apps
- Category browser → Store API client: loads apps
- Category browser → Category apps: opens category
- App search → App details: opens result
- Category apps → App details: opens app
- App details → Store API client: loads app
- Store API client → HTTP transport: sends requests
- HTTP transport → Konbini server: requests data
- Konbini server → HTTP transport: returns data
- Store API client → App and versions: parses app
- Category browser → Catalog item model: builds rows
- App details → APK downloader: starts download
- APK downloader → Konbini server: fetches APK
- APK downloader → Android package installer: launches install
- Android user → Downloads view: views downloads
- Downloads view → Konbini server: loads installed catalog
- Update checker → HTTP transport: checks versions
- Update checker → Android user: notifies updates
- Login → Preferences and auth: saves auth
- Settings → Preferences and auth: stores preferences
- Profile → Preferences and auth: reads profile state
- User profile → Konbini server: loads profile
