# trakt/trakt-android architecture

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

## Overview

Trakt for Android is a watch-tracking and discovery app for mobile, TV, and tablets. Users enter through the Android app, then browse home and discovery content, view calendars, participate in comments, and track check-ins; authentication and VIP billing support account-linked use. The tree identifies these feature areas and their UI, use-case, and data layers. Most feature source was not sampled, so inter-feature navigation and network/data wiring are not asserted; the check-in service excerpt does show its manager and trivia dependencies.

Main entry points: [`app/src/main/java/tv/trakt/trakt/core/checkin/data/service/CheckInService.kt`](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/checkin/data/service/CheckInService.kt) (Check-in service), [`app/src/main/java/tv/trakt/trakt/MainActivity.kt`](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/MainActivity.kt) (Android app), [`app/src/main/java/tv/trakt/trakt/core/checkin/data/CheckInManager.kt`](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/checkin/data/CheckInManager.kt) (Check-in manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App entry"]
  node_main["Android app<br/>[MainActivity.kt]"]
end

subgraph group_account["Account and VIP"]
  node_auth["Authorization"]
  node_billing["VIP billing<br/>[BillingScreen.kt]"]
end

subgraph group_browse["Browse and plan"]
  node_home["Home activity<br/>[HomeScreen.kt]"]
  node_discover["Discovery<br/>[DiscoverScreen.kt]"]
  node_calendar["Calendar<br/>[CalendarScreen.kt]"]
  node_filters["Global filters"]
end

subgraph group_engage["Tracking and social"]
  node_comments["Comments<br/>[CommentsScreen.kt]"]
  node_checkin["Check-in service<br/>[CheckInService.kt]"]
  node_checkin_manager["Check-in manager<br/>[CheckInManager.kt]"]
  node_trivia["Movie/show trivia<br/>[CheckInService.kt]"]
  node_updates["Activity updates"]
end

node_viewer(("Viewer"))

node_viewer -->|"opens"| node_main
node_checkin -->|"checks activity"| node_checkin_manager
node_checkin -->|"requests trivia"| node_trivia

click node_main "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/MainActivity.kt"
click node_auth "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/auth/usecase/AuthorizeUserUseCase.kt"
click node_billing "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/billing/BillingScreen.kt"
click node_home "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/home/HomeScreen.kt"
click node_discover "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/discover/DiscoverScreen.kt"
click node_calendar "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/calendar/CalendarScreen.kt"
click node_filters "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/filters/GlobalFiltersSheet.kt"
click node_comments "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/comments/CommentsScreen.kt"
click node_checkin "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/checkin/data/service/CheckInService.kt"
click node_checkin_manager "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/checkin/data/CheckInManager.kt"
click node_trivia "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/checkin/data/service/CheckInService.kt"
click node_updates "https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/comments/data/CommentsUpdatesStorage.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_main,node_viewer toneBlue
class node_auth,node_billing toneAmber
class node_home,node_discover,node_calendar,node_filters toneMint
class node_comments,node_checkin,node_checkin_manager,node_trivia,node_updates toneRose
```

## Components

### App entry

- [Android app](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/MainActivity.kt): `app/src/main/java/tv/trakt/trakt/MainActivity.kt`

### Account and VIP

- [Authorization](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/auth/usecase/AuthorizeUserUseCase.kt): `app/src/main/java/tv/trakt/trakt/core/auth/usecase/AuthorizeUserUseCase.kt`
- [VIP billing](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/billing/BillingScreen.kt): `app/src/main/java/tv/trakt/trakt/core/billing/BillingScreen.kt`

### Browse and plan

- [Home activity](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/home/HomeScreen.kt): `app/src/main/java/tv/trakt/trakt/core/home/HomeScreen.kt`
- [Discovery](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/discover/DiscoverScreen.kt): `app/src/main/java/tv/trakt/trakt/core/discover/DiscoverScreen.kt`
- [Calendar](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/calendar/CalendarScreen.kt): `app/src/main/java/tv/trakt/trakt/core/calendar/CalendarScreen.kt`
- [Global filters](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/filters/GlobalFiltersSheet.kt): `app/src/main/java/tv/trakt/trakt/core/filters/GlobalFiltersSheet.kt`

### Tracking and social

- [Comments](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/comments/CommentsScreen.kt): `app/src/main/java/tv/trakt/trakt/core/comments/CommentsScreen.kt`
- [Check-in service](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/checkin/data/service/CheckInService.kt): `app/src/main/java/tv/trakt/trakt/core/checkin/data/service/CheckInService.kt`
- [Check-in manager](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/checkin/data/CheckInManager.kt): `app/src/main/java/tv/trakt/trakt/core/checkin/data/CheckInManager.kt`
- [Movie/show trivia](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/checkin/data/service/CheckInService.kt): `app/src/main/java/tv/trakt/trakt/core/checkin/data/service/CheckInService.kt`
- [Activity updates](https://github.com/trakt/trakt-android/blob/main/app/src/main/java/tv/trakt/trakt/core/comments/data/CommentsUpdatesStorage.kt): `app/src/main/java/tv/trakt/trakt/core/comments/data/CommentsUpdatesStorage.kt`

### Other components

- **Viewer**

## Connections

- Viewer → Android app: opens
- Check-in service → Check-in manager: checks activity
- Check-in service → Movie/show trivia: requests trivia
