# cymcsg/ultimateandroid architecture

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

## Overview

UltimateAndroid is an Android rapid-development framework, with a bundled demo app that searches GitHub repositories. In the demo’s principal flow, a user interacts with the main screen, repository data is requested through the API service, and repository items are presented in the UI. The framework also groups common utilities, persistence/network helpers, and reusable UI modules. The README documents view injection, ORM, asynchronous networking, image loading, and many UI effects; their implementation paths are represented where the tree supports them. Only the API service source was sampled, so several demo and framework connections are documented capabilities or inferred from module roles rather than inspected call sites.

Main entry points: [`UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/service/GithubApiService.java`](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/service/GithubApiService.java) (GitHub API Service), [`UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/presenter/RepositoryPresenter.java`](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/presenter/RepositoryPresenter.java) (Repository Presenter), [`UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/view/MainActivity.java`](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/view/MainActivity.java) (Main Activity), [`UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/service/GithubApiServiceInterface.java`](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/service/GithubApiServiceInterface.java) (API Interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_demo["GitHub Demo"]
  node_activity["Main Activity<br/>[MainActivity.java]"]
  node_presenter["Repository Presenter"]
  node_api["GitHub API Service"]
  node_apiinterface["API Interface"]
  node_repo["Repository Models<br/>[Repository.java]"]
  node_repolist["Repository List"]
  node_adapter["Repository Adapter"]
  node_view["Repository View"]
end

subgraph group_core["Common Utilities"]
  node_application["Common Application"]
  node_basic["Basic Utilities<br/>[BasicUtils.java]"]
  node_async["Async Utilities<br/>[RxUtils.java]"]
end

subgraph group_data["Data And Network"]
  node_database["Database Helpers<br/>[DataBaseUtils.java]"]
  node_greendao["GreenDAO Helpers<br/>[GreenDaoUtils.java]"]
  node_network["Network Helpers<br/>[NetworkUtils.java]"]
  node_https["HTTPS Utilities<br/>[HttpsUtils.java]"]
  node_json["JSON Utilities<br/>[JsonUtil.java]"]
end

subgraph group_ui["Reusable UI"]
  node_image["Image Utilities<br/>[ImageUtils.java]"]
  node_webview["WebView Helpers<br/>[WebViewUtils.java]"]
  node_listview["Ultimate ListView"]
  node_loadmore["Load More List"]
  node_textview["Autofit Text"]
  node_toast["Toast Utility<br/>[ToastUtil.java]"]
end

node_user(("App User"))
node_github{{"GitHub API"}}

node_user -->|"interacts with"| node_activity
node_activity -->|"delegates to"| node_presenter
node_presenter -->|"requests repositories"| node_api
node_api -->|"invokes"| node_apiinterface
node_apiinterface -->|"queries"| node_github
node_github -->|"returns results"| node_api
node_api -->|"emits results"| node_repolist
node_presenter -->|"updates"| node_view
node_view -->|"displays items"| node_adapter
node_adapter -->|"binds data"| node_repo
node_api -->|"checks values"| node_basic

click node_activity "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/view/MainActivity.java"
click node_presenter "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/presenter/RepositoryPresenter.java"
click node_api "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/service/GithubApiService.java"
click node_apiinterface "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/service/GithubApiServiceInterface.java"
click node_repo "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/model/Repository.java"
click node_repolist "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/model/RepositoryList.java"
click node_adapter "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/adapter/RepositoryAdapter.java"
click node_view "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/view/RepositoryView.java"
click node_application "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/CommonApplication.java"
click node_basic "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/basicUtils/BasicUtils.java"
click node_async "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/basicUtils/RxUtils.java"
click node_database "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/dbUtils/DataBaseUtils.java"
click node_greendao "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/dbUtils/GreenDaoUtils.java"
click node_network "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/networkUtils/NetworkUtils.java"
click node_https "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/urlUtils/HttpsUtils.java"
click node_json "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/jsonUtils/JsonUtil.java"
click node_image "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/uiUtils/ImageUtils.java"
click node_webview "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/moduleUtils/WebViewUtils.java"
click node_listview "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/UltimateListview.java"
click node_loadmore "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/LoadMoreListView.java"
click node_textview "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/AutofitTextView.java"
click node_toast "https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/ToastUtil.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_activity,node_presenter,node_api,node_apiinterface,node_repo,node_repolist,node_adapter,node_view,node_user toneBlue
class node_application,node_basic,node_async toneAmber
class node_database,node_greendao,node_network,node_https,node_json,node_github toneMint
class node_image,node_webview,node_listview,node_loadmore,node_textview,node_toast toneRose
```

## Components

### GitHub Demo

- [Main Activity](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/view/MainActivity.java): `UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/view/MainActivity.java`
- [Repository Presenter](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/presenter/RepositoryPresenter.java): `UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/presenter/RepositoryPresenter.java`
- [GitHub API Service](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/service/GithubApiService.java): `UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/service/GithubApiService.java`
- [API Interface](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/service/GithubApiServiceInterface.java): `UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/service/GithubApiServiceInterface.java`
- [Repository Models](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/model/Repository.java): `UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/model/Repository.java`
- [Repository List](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/model/RepositoryList.java): `UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/model/RepositoryList.java`
- [Repository Adapter](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/adapter/RepositoryAdapter.java): `UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/adapter/RepositoryAdapter.java`
- [Repository View](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/view/RepositoryView.java): `UltimateAndroid/app/src/main/java/com/marshalchen/ultimateandroid/demo/view/RepositoryView.java`

### Common Utilities

- [Common Application](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/CommonApplication.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/CommonApplication.java`
- [Basic Utilities](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/basicUtils/BasicUtils.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/basicUtils/BasicUtils.java`
- [Async Utilities](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/basicUtils/RxUtils.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/basicUtils/RxUtils.java`

### Data And Network

- [Database Helpers](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/dbUtils/DataBaseUtils.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/dbUtils/DataBaseUtils.java`
- [GreenDAO Helpers](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/dbUtils/GreenDaoUtils.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/dbUtils/GreenDaoUtils.java`
- [Network Helpers](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/networkUtils/NetworkUtils.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/networkUtils/NetworkUtils.java`
- [HTTPS Utilities](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/urlUtils/HttpsUtils.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/urlUtils/HttpsUtils.java`
- [JSON Utilities](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/jsonUtils/JsonUtil.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/jsonUtils/JsonUtil.java`

### Reusable UI

- [Image Utilities](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/uiUtils/ImageUtils.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/uiUtils/ImageUtils.java`
- [WebView Helpers](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/moduleUtils/WebViewUtils.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/commonUtils/moduleUtils/WebViewUtils.java`
- [Ultimate ListView](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/UltimateListview.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/UltimateListview.java`
- [Load More List](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/LoadMoreListView.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/LoadMoreListView.java`
- [Autofit Text](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/AutofitTextView.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/AutofitTextView.java`
- [Toast Utility](https://github.com/cymcsg/ultimateandroid/blob/master/UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/ToastUtil.java): `UltimateAndroid/ultimateandroid/src/main/java/com/marshalchen/ua/common/usefulModule/ToastUtil.java`

### Other components

- **App User**
- **GitHub API**

## Connections

- App User → Main Activity: interacts with
- Main Activity → Repository Presenter: delegates to
- Repository Presenter → GitHub API Service: requests repositories
- GitHub API Service → API Interface: invokes
- API Interface → GitHub API: queries
- GitHub API → GitHub API Service: returns results
- GitHub API Service → Repository List: emits results
- Repository Presenter → Repository View: updates
- Repository View → Repository Adapter: displays items
- Repository Adapter → Repository Models: binds data
- GitHub API Service → Basic Utilities: checks values
