# leoallvez/overview architecture

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

- Interactive diagram: https://gitdiagram.com/leoallvez/overview
- Repository: https://github.com/leoallvez/overview

## Overview

Overview is an Android app for discovering movies and TV across streaming services, searching and filtering results, inspecting details, and keeping favorites. The user flow enters through Compose navigation and screens, then uses presentation/domain/data layers to retrieve or persist content. The tree and README establish capabilities, while sampled sources confirm TMDB endpoints, paging/search behavior, Room storage, and navigation. Several screen-to-use-case connections are inferred only from module organization, so uncertain call edges are omitted.

Main entry points: [`app/src/main/java/br/dev/singular/overview/ui/navigation/NavController.kt`](https://github.com/leoallvez/overview/blob/main/app/src/main/java/br/dev/singular/overview/ui/navigation/NavController.kt) (Compose navigation), [`data/src/main/java/br/dev/singular/overview/data/repository`](https://github.com/leoallvez/overview/tree/main/data/src/main/java/br/dev/singular/overview/data/repository) (Media repositories), [`app/src/main/java/br/dev/singular/overview/ui/search`](https://github.com/leoallvez/overview/tree/main/app/src/main/java/br/dev/singular/overview/ui/search) (Cross-platform search), [`app/src/main/java/br/dev/singular/overview/ui/home`](https://github.com/leoallvez/overview/tree/main/app/src/main/java/br/dev/singular/overview/ui/home) (Home discovery)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["App experience"]
  node_navigation["Compose navigation<br/>[NavController.kt]"]
  node_home["Home discovery"]
  node_search["Cross-platform search"]
  node_details["Media details"]
  node_favorites["Favorites collection"]
  node_person["Person details"]
  node_streaming["Streaming selection"]
  node_player["Trailer player"]
end

subgraph group_domain["Discovery domain"]
  node_media["Media operations"]
  node_people["Person lookup"]
  node_streaming_domain["Streaming preferences"]
  node_genre["Genre filtering"]
end

subgraph group_data["Data access"]
  node_media_repo["Media repositories"]
  node_media_remote["Media API access"]
  node_suggestions["Suggestions"]
  node_suggestion_repo["Suggestion repository"]
  node_local_sources["Local data sources"]
end

subgraph group_platform["Platform services"]
  node_database[("Room database<br/>[AppDatabase.kt]")]
end

node_user(("App user"))
node_api{{"TMDB API"}}
node_analytics{{"Firebase Analytics"}}

node_user -->|"opens"| node_navigation
node_navigation -->|"routes"| node_home
node_navigation -->|"routes"| node_search
node_navigation -->|"routes"| node_details
node_navigation -->|"routes"| node_favorites
node_navigation -->|"routes"| node_person
node_navigation -->|"routes"| node_streaming
node_navigation -->|"routes"| node_player
node_search -->|"requests pages"| node_media_repo
node_home -->|"browses media"| node_media_repo
node_details -->|"loads details"| node_media_repo
node_favorites -->|"manages favorites"| node_media
node_person -->|"loads person"| node_people
node_streaming -->|"saves selection"| node_streaming_domain
node_media_repo -->|"requests media"| node_media_remote
node_media_remote -->|"fetches content"| node_api
node_media -->|"uses repositories"| node_media_repo
node_search -.->|"searches suggestions"| node_suggestions
node_suggestions -->|"loads suggestions"| node_suggestion_repo
node_suggestion_repo -->|"reads and writes"| node_local_sources
node_local_sources -->|"persists data"| node_database
node_genre -->|"stores genres"| node_database
node_user -.->|"generates events"| node_analytics

click node_navigation "https://github.com/leoallvez/overview/blob/main/app/src/main/java/br/dev/singular/overview/ui/navigation/NavController.kt"
click node_home "https://github.com/leoallvez/overview/tree/main/app/src/main/java/br/dev/singular/overview/ui/home"
click node_search "https://github.com/leoallvez/overview/tree/main/app/src/main/java/br/dev/singular/overview/ui/search"
click node_details "https://github.com/leoallvez/overview/tree/main/app/src/main/java/br/dev/singular/overview/ui/media"
click node_favorites "https://github.com/leoallvez/overview/tree/main/presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/favorites"
click node_person "https://github.com/leoallvez/overview/tree/main/presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/person"
click node_streaming "https://github.com/leoallvez/overview/tree/main/presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/streaming"
click node_player "https://github.com/leoallvez/overview/tree/main/presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/video"
click node_media "https://github.com/leoallvez/overview/tree/main/domain/src/main/java/br/dev/singular/overview/domain"
click node_people "https://github.com/leoallvez/overview/blob/main/domain/src/main/java/br/dev/singular/overview/domain/usecase/GetPersonByIdUseCase.kt"
click node_streaming_domain "https://github.com/leoallvez/overview/tree/main/domain/src/main/java/br/dev/singular/overview/domain/usecase/streaming"
click node_media_repo "https://github.com/leoallvez/overview/tree/main/data/src/main/java/br/dev/singular/overview/data/repository"
click node_media_remote "https://github.com/leoallvez/overview/blob/main/data/src/main/java/br/dev/singular/overview/data/network/source/MediaRemoteDataSource.kt"
click node_suggestions "https://github.com/leoallvez/overview/tree/main/domain/src/main/java/br/dev/singular/overview/domain/usecase/suggestion"
click node_suggestion_repo "https://github.com/leoallvez/overview/blob/main/data/src/main/java/br/dev/singular/overview/data/repository/SuggestionRepository.kt"
click node_database "https://github.com/leoallvez/overview/blob/main/app/src/main/java/br/dev/singular/overview/data/db/AppDatabase.kt"
click node_local_sources "https://github.com/leoallvez/overview/tree/main/data/src/main/java/br/dev/singular/overview/data/local/source"
click node_genre "https://github.com/leoallvez/overview/tree/main/app/src/main/java/br/dev/singular/overview/data/repository/genre"

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_navigation,node_home,node_search,node_details,node_favorites,node_person,node_streaming,node_player,node_user toneBlue
class node_media,node_people,node_streaming_domain,node_genre toneAmber
class node_media_repo,node_media_remote,node_suggestions,node_suggestion_repo,node_local_sources,node_api toneMint
class node_database toneRose
class node_analytics toneIndigo
```

## Components

### App experience

- [Compose navigation](https://github.com/leoallvez/overview/blob/main/app/src/main/java/br/dev/singular/overview/ui/navigation/NavController.kt): `app/src/main/java/br/dev/singular/overview/ui/navigation/NavController.kt`
- [Home discovery](https://github.com/leoallvez/overview/tree/main/app/src/main/java/br/dev/singular/overview/ui/home): `app/src/main/java/br/dev/singular/overview/ui/home`
- [Cross-platform search](https://github.com/leoallvez/overview/tree/main/app/src/main/java/br/dev/singular/overview/ui/search): `app/src/main/java/br/dev/singular/overview/ui/search`
- [Media details](https://github.com/leoallvez/overview/tree/main/app/src/main/java/br/dev/singular/overview/ui/media): `app/src/main/java/br/dev/singular/overview/ui/media`
- [Favorites collection](https://github.com/leoallvez/overview/tree/main/presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/favorites): `presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/favorites`
- [Person details](https://github.com/leoallvez/overview/tree/main/presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/person): `presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/person`
- [Streaming selection](https://github.com/leoallvez/overview/tree/main/presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/streaming): `presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/streaming`
- [Trailer player](https://github.com/leoallvez/overview/tree/main/presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/video): `presentation/src/main/java/br/dev/singular/overview/presentation/ui/screens/video`

### Discovery domain

- [Media operations](https://github.com/leoallvez/overview/tree/main/domain/src/main/java/br/dev/singular/overview/domain): `domain/src/main/java/br/dev/singular/overview/domain`
- [Person lookup](https://github.com/leoallvez/overview/blob/main/domain/src/main/java/br/dev/singular/overview/domain/usecase/GetPersonByIdUseCase.kt): `domain/src/main/java/br/dev/singular/overview/domain/usecase/GetPersonByIdUseCase.kt`
- [Streaming preferences](https://github.com/leoallvez/overview/tree/main/domain/src/main/java/br/dev/singular/overview/domain/usecase/streaming): `domain/src/main/java/br/dev/singular/overview/domain/usecase/streaming`
- [Genre filtering](https://github.com/leoallvez/overview/tree/main/app/src/main/java/br/dev/singular/overview/data/repository/genre): `app/src/main/java/br/dev/singular/overview/data/repository/genre`

### Data access

- [Media repositories](https://github.com/leoallvez/overview/tree/main/data/src/main/java/br/dev/singular/overview/data/repository): `data/src/main/java/br/dev/singular/overview/data/repository`
- [Media API access](https://github.com/leoallvez/overview/blob/main/data/src/main/java/br/dev/singular/overview/data/network/source/MediaRemoteDataSource.kt): `data/src/main/java/br/dev/singular/overview/data/network/source/MediaRemoteDataSource.kt`
- [Suggestions](https://github.com/leoallvez/overview/tree/main/domain/src/main/java/br/dev/singular/overview/domain/usecase/suggestion): `domain/src/main/java/br/dev/singular/overview/domain/usecase/suggestion`
- [Suggestion repository](https://github.com/leoallvez/overview/blob/main/data/src/main/java/br/dev/singular/overview/data/repository/SuggestionRepository.kt): `data/src/main/java/br/dev/singular/overview/data/repository/SuggestionRepository.kt`
- [Local data sources](https://github.com/leoallvez/overview/tree/main/data/src/main/java/br/dev/singular/overview/data/local/source): `data/src/main/java/br/dev/singular/overview/data/local/source`

### Platform services

- [Room database](https://github.com/leoallvez/overview/blob/main/app/src/main/java/br/dev/singular/overview/data/db/AppDatabase.kt): `app/src/main/java/br/dev/singular/overview/data/db/AppDatabase.kt`

### Other components

- **App user**
- **TMDB API**
- **Firebase Analytics**

## Connections

- App user → Compose navigation: opens
- Compose navigation → Home discovery: routes
- Compose navigation → Cross-platform search: routes
- Compose navigation → Media details: routes
- Compose navigation → Favorites collection: routes
- Compose navigation → Person details: routes
- Compose navigation → Streaming selection: routes
- Compose navigation → Trailer player: routes
- Cross-platform search → Media repositories: requests pages
- Home discovery → Media repositories: browses media
- Media details → Media repositories: loads details
- Favorites collection → Media operations: manages favorites
- Person details → Person lookup: loads person
- Streaming selection → Streaming preferences: saves selection
- Media repositories → Media API access: requests media
- Media API access → TMDB API: fetches content
- Media operations → Media repositories: uses repositories
- Cross-platform search → Suggestions: searches suggestions
- Suggestions → Suggestion repository: loads suggestions
- Suggestion repository → Local data sources: reads and writes
- Local data sources → Room database: persists data
- Genre filtering → Room database: stores genres
- App user → Firebase Analytics: generates events
