# manojcse90/composeandcleanarchitctureexample architecture

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

- Interactive diagram: https://gitdiagram.com/manojcse90/composeandcleanarchitctureexample
- Repository: https://github.com/manojcse90/composeandcleanarchitctureexample

## Overview

This appears to be an Android app for presenting users fetched from a remote API, organized into Compose presentation, domain, and data layers. The intended flow is a user screen through a ViewModel and use case to a repository and API, then back as user data. The README is empty and the sampled source contains no runtime implementation, so these connections are inferred from names and paths; exact calls, mapping, and dependency-injection wiring cannot be verified.

Main entry points: [`app/src/main/java/com/example/composeandcleanarchitctureexample/data/api/UserApi.kt`](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/data/api/UserApi.kt) (User API), [`app/src/main/java/com/example/composeandcleanarchitctureexample/data/repository/UserRepositoryImpl.kt`](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/data/repository/UserRepositoryImpl.kt) (Repository implementation), [`app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/view/MainActivity.kt`](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/view/MainActivity.kt) (Main activity), [`app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/MyApp.kt`](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/MyApp.kt) (App composition)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Presentation"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_app["App composition<br/>[MyApp.kt]"]
  node_screen["User screen<br/>[UserScreen.kt]"]
  node_viewmodel["User ViewModel<br/>[UserViewModel.kt]"]
end

subgraph group_domain["Domain"]
  node_usecase["Get users<br/>[GetUsersUseCase.kt]"]
  node_repository["User repository contract<br/>[UserRepository.kt]"]
  node_user["Domain user<br/>[User.kt]"]
end

subgraph group_data["Data"]
  node_repoimpl["Repository implementation"]
  node_api["User API<br/>[UserApi.kt]"]
  node_dto["User DTO<br/>[UserDto.kt]"]
end

subgraph group_wiring["App wiring"]
  node_network["Network module<br/>[NetworkModule.kt]"]
end

node_person(("App user"))
node_service["Remote service"]

node_person -->|"opens"| node_activity
node_activity -->|"starts"| node_app
node_app -->|"composes"| node_screen
node_screen -->|"requests users"| node_viewmodel
node_viewmodel -->|"invokes"| node_usecase
node_usecase -->|"requests users"| node_repository
node_repoimpl -->|"implements"| node_repository
node_repoimpl -->|"fetches users"| node_api
node_api -->|"requests users"| node_service
node_api -->|"returns DTOs"| node_dto
node_network -.->|"provides client"| node_api

click node_activity "https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/view/MainActivity.kt"
click node_app "https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/MyApp.kt"
click node_screen "https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/view/UserScreen.kt"
click node_viewmodel "https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/viewmodel/UserViewModel.kt"
click node_usecase "https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/domain/usecase/GetUsersUseCase.kt"
click node_repository "https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/domain/repository/UserRepository.kt"
click node_user "https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/domain/model/User.kt"
click node_repoimpl "https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/data/repository/UserRepositoryImpl.kt"
click node_api "https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/data/api/UserApi.kt"
click node_dto "https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/data/model/UserDto.kt"
click node_network "https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/di/NetworkModule.kt"

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_app,node_screen,node_viewmodel,node_person toneBlue
class node_usecase,node_repository,node_user toneAmber
class node_repoimpl,node_api,node_dto toneMint
class node_network toneRose
class node_service toneIndigo
```

## Components

### Presentation

- [Main activity](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/view/MainActivity.kt): `app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/view/MainActivity.kt`
- [App composition](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/MyApp.kt): `app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/MyApp.kt`
- [User screen](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/view/UserScreen.kt): `app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/view/UserScreen.kt`
- [User ViewModel](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/viewmodel/UserViewModel.kt): `app/src/main/java/com/example/composeandcleanarchitctureexample/presentation/viewmodel/UserViewModel.kt`

### Domain

- [Get users](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/domain/usecase/GetUsersUseCase.kt): `app/src/main/java/com/example/composeandcleanarchitctureexample/domain/usecase/GetUsersUseCase.kt`
- [User repository contract](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/domain/repository/UserRepository.kt): `app/src/main/java/com/example/composeandcleanarchitctureexample/domain/repository/UserRepository.kt`
- [Domain user](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/domain/model/User.kt): `app/src/main/java/com/example/composeandcleanarchitctureexample/domain/model/User.kt`

### Data

- [Repository implementation](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/data/repository/UserRepositoryImpl.kt): `app/src/main/java/com/example/composeandcleanarchitctureexample/data/repository/UserRepositoryImpl.kt`
- [User API](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/data/api/UserApi.kt): `app/src/main/java/com/example/composeandcleanarchitctureexample/data/api/UserApi.kt`
- [User DTO](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/data/model/UserDto.kt): `app/src/main/java/com/example/composeandcleanarchitctureexample/data/model/UserDto.kt`

### App wiring

- [Network module](https://github.com/manojcse90/composeandcleanarchitctureexample/blob/main/app/src/main/java/com/example/composeandcleanarchitctureexample/di/NetworkModule.kt): `app/src/main/java/com/example/composeandcleanarchitctureexample/di/NetworkModule.kt`

### Other components

- **App user**
- **Remote service**

## Connections

- App user → Main activity: opens
- Main activity → App composition: starts
- App composition → User screen: composes
- User screen → User ViewModel: requests users
- User ViewModel → Get users: invokes
- Get users → User repository contract: requests users
- Repository implementation → User repository contract: implements
- Repository implementation → User API: fetches users
- User API → Remote service: requests users
- User API → User DTO: returns DTOs
- Network module → User API: provides client
