# animetailapp/animetail architecture

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

- Interactive diagram: https://gitdiagram.com/animetailapp/animetail
- Repository: https://github.com/animetailapp/animetail

## Overview

Animetail is an Android media discovery, library, playback, and reading app built on Mihon/Aniyomi. Users browse sources and feeds, add titles to a library, then watch episodes or read chapters while tracking progress. The README also documents recommendations, torrent streaming, backups, external trackers, and Discord presence. The graph preserves those product areas, but most implementation files were not sampled; connections between them are therefore limited to relationships explicitly stated in the README.

Main entry points: [`app/src/main/java/eu/kanade/presentation/entries/anime/AnimeScreen.kt`](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/entries/anime/AnimeScreen.kt) (Title details), [`app/src/main/java/eu/kanade/presentation/browse/anime/BrowseAnimeSourceScreen.kt`](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/browse/anime/BrowseAnimeSourceScreen.kt) (Source browsing), [`app/src/main/java/eu/kanade/domain/track/anime/interactor/SyncEpisodeProgressWithTrack.kt`](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/domain/track/anime/interactor/SyncEpisodeProgressWithTrack.kt) (Tracker sync), [`app/src/main/java/eu/kanade/presentation/more/storage/StorageScreenContent.kt`](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/more/storage/StorageScreenContent.kt) (Storage screen)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Discovery and Sources"]
  node_home["Home recommendations<br/>[FeedScreen.kt]"]
  node_source_browse["Source browsing"]
  node_global_search["Global search"]
  node_extensions["Extension stores"]
end

subgraph group_library["Library and Progress"]
  node_library_ui["Media library"]
  node_entry["Title details<br/>[AnimeScreen.kt]"]
  node_progress["Episode and chapter progress<br/>[SetSeenStatus.kt]"]
  node_tracking["Tracker sync"]
end

subgraph group_media["Playback and Reading"]
  node_player["Video player"]
  node_reader["Image reader<br/>[AnimeScreen.kt]"]
  node_downloads["Offline downloads"]
  node_torrent["Torrent streaming"]
end

subgraph group_integrations["External Services"]
  node_trackers["Tracker providers"]
  node_discord["Discord presence"]
end

subgraph group_platform["App Services"]
  node_backup_sync["Backup and sync<br/>[SyncService.kt]"]
  node_local_server["Extension HTTP server"]
  node_storage["Storage management<br/>[StorageManager.kt]"]
  node_storage_ui["Storage screen"]
end

node_user(("Media user"))

node_user -->|"views feed"| node_home
node_user -->|"browses sources"| node_source_browse
node_user -->|"searches titles"| node_global_search
node_user -->|"organizes library"| node_library_ui
node_user -->|"opens media"| node_entry
node_entry -->|"launches playback"| node_player
node_entry -->|"opens reader"| node_reader
node_user -->|"downloads media"| node_downloads
node_user -->|"streams torrents"| node_torrent
node_user -->|"tracks progress"| node_tracking
node_tracking -->|"syncs scores"| node_trackers
node_user -->|"backs up library"| node_backup_sync
node_user -->|"serves extensions"| node_local_server
node_user -->|"shares presence"| node_discord
node_user -->|"manages storage"| node_storage_ui
node_storage_ui -.->|"configures folders"| node_storage
node_source_browse -.->|"uses extensions"| node_extensions

click node_home "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/browse/FeedScreen.kt"
click node_source_browse "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/browse/anime/BrowseAnimeSourceScreen.kt"
click node_global_search "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt"
click node_extensions "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/mihon/data/extension/service/AnimeExtensionStoreService.kt"
click node_library_ui "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/category/AnimeCategoryScreen.kt"
click node_entry "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/entries/anime/AnimeScreen.kt"
click node_progress "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/domain/items/episode/interactor/SetSeenStatus.kt"
click node_tracking "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/domain/track/anime/interactor/SyncEpisodeProgressWithTrack.kt"
click node_player "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/tachiyomi/data/player/service/HttpServerService.kt"
click node_reader "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/entries/anime/AnimeScreen.kt"
click node_downloads "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/download/DownloadQueueList.kt"
click node_torrent "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/tachiyomi/data/torrent/service/TorrentServerService.kt"
click node_trackers "https://github.com/animetailapp/animetail/blob/master/app/src/main/graphql/mihon/graphql/anilist/AniListGetCurrentUser.graphql"
click node_discord "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/tachiyomi/data/connections/discord/DiscordRPCService.kt"
click node_backup_sync "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt"
click node_local_server "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/tachiyomi/util/LocalHttpServerService.kt"
click node_storage "https://github.com/animetailapp/animetail/blob/master/domain/src/main/java/tachiyomi/domain/storage/service/StorageManager.kt"
click node_storage_ui "https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/more/storage/StorageScreenContent.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_home,node_source_browse,node_global_search,node_extensions,node_user toneBlue
class node_library_ui,node_entry,node_progress,node_tracking toneAmber
class node_player,node_reader,node_downloads,node_torrent toneMint
class node_trackers,node_discord toneRose
class node_backup_sync,node_local_server,node_storage,node_storage_ui toneIndigo
```

## Components

### Discovery and Sources

- [Home recommendations](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/browse/FeedScreen.kt): `app/src/main/java/eu/kanade/presentation/browse/FeedScreen.kt`
- [Source browsing](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/browse/anime/BrowseAnimeSourceScreen.kt): `app/src/main/java/eu/kanade/presentation/browse/anime/BrowseAnimeSourceScreen.kt`
- [Global search](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt): `app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt`
- [Extension stores](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/mihon/data/extension/service/AnimeExtensionStoreService.kt): `app/src/main/java/mihon/data/extension/service/AnimeExtensionStoreService.kt`

### Library and Progress

- [Media library](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/category/AnimeCategoryScreen.kt): `app/src/main/java/eu/kanade/presentation/category/AnimeCategoryScreen.kt`
- [Title details](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/entries/anime/AnimeScreen.kt): `app/src/main/java/eu/kanade/presentation/entries/anime/AnimeScreen.kt`
- [Episode and chapter progress](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/domain/items/episode/interactor/SetSeenStatus.kt): `app/src/main/java/eu/kanade/domain/items/episode/interactor/SetSeenStatus.kt`
- [Tracker sync](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/domain/track/anime/interactor/SyncEpisodeProgressWithTrack.kt): `app/src/main/java/eu/kanade/domain/track/anime/interactor/SyncEpisodeProgressWithTrack.kt`

### Playback and Reading

- [Video player](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/tachiyomi/data/player/service/HttpServerService.kt): `app/src/main/java/eu/kanade/tachiyomi/data/player/service/HttpServerService.kt`
- [Image reader](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/entries/anime/AnimeScreen.kt): `app/src/main/java/eu/kanade/presentation/entries/anime/AnimeScreen.kt`
- [Offline downloads](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/download/DownloadQueueList.kt): `app/src/main/java/eu/kanade/presentation/download/DownloadQueueList.kt`
- [Torrent streaming](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/tachiyomi/data/torrent/service/TorrentServerService.kt): `app/src/main/java/eu/kanade/tachiyomi/data/torrent/service/TorrentServerService.kt`

### External Services

- [Tracker providers](https://github.com/animetailapp/animetail/blob/master/app/src/main/graphql/mihon/graphql/anilist/AniListGetCurrentUser.graphql): `app/src/main/graphql/mihon/graphql/anilist/AniListGetCurrentUser.graphql`
- [Discord presence](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/tachiyomi/data/connections/discord/DiscordRPCService.kt): `app/src/main/java/eu/kanade/tachiyomi/data/connections/discord/DiscordRPCService.kt`

### App Services

- [Backup and sync](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt): `app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt`
- [Extension HTTP server](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/tachiyomi/util/LocalHttpServerService.kt): `app/src/main/java/eu/kanade/tachiyomi/util/LocalHttpServerService.kt`
- [Storage management](https://github.com/animetailapp/animetail/blob/master/domain/src/main/java/tachiyomi/domain/storage/service/StorageManager.kt): `domain/src/main/java/tachiyomi/domain/storage/service/StorageManager.kt`
- [Storage screen](https://github.com/animetailapp/animetail/blob/master/app/src/main/java/eu/kanade/presentation/more/storage/StorageScreenContent.kt): `app/src/main/java/eu/kanade/presentation/more/storage/StorageScreenContent.kt`

### Other components

- **Media user**

## Connections

- Media user → Home recommendations: views feed
- Media user → Source browsing: browses sources
- Media user → Global search: searches titles
- Media user → Media library: organizes library
- Media user → Title details: opens media
- Title details → Video player: launches playback
- Title details → Image reader: opens reader
- Media user → Offline downloads: downloads media
- Media user → Torrent streaming: streams torrents
- Media user → Tracker sync: tracks progress
- Tracker sync → Tracker providers: syncs scores
- Media user → Backup and sync: backs up library
- Media user → Extension HTTP server: serves extensions
- Media user → Discord presence: shares presence
- Media user → Storage screen: manages storage
- Storage screen → Storage management: configures folders
- Source browsing → Extension stores: uses extensions
