# bazsalanszky/eternity architecture

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

## Overview

Eternity is an Android client for browsing and engaging with Lemmy communities. The principal user journey is opening a feed, exploring posts and communities, then taking actions such as voting, saving, subscribing, or commenting. Separate areas cover account switching and inbox/profile content, plus themes and media handling. The README documents these capabilities, but sampled source excerpts are limited; the graph therefore uses broad source directories for documented subsystems and only depicts specific service/API wiring where an excerpt supports it.

Main entry points: [`app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewImageOrGifActivity.java`](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewImageOrGifActivity.java) (Media viewing), [`app/src/main/java/eu/toldi/infinityforlemmy/apis/LemmyAPI.java`](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/apis/LemmyAPI.java) (Lemmy API), [`app/src/main/java/eu/toldi/infinityforlemmy/activities/MainActivity.java`](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/MainActivity.java) (Main feeds), [`app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewSubredditDetailActivity.java`](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewSubredditDetailActivity.java) (Community views)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_browse["Browse Lemmy"]
  node_main["Main feeds<br/>[MainActivity.java]"]
  node_community["Community views"]
  node_search["Search and discovery"]
  node_lemmy["Lemmy API<br/>[LemmyAPI.java]"]
  node_postviews["Post and comment views"]
end

subgraph group_engage["Content actions"]
  node_postactions["Votes and saves<br/>[VoteThing.java]"]
  node_comments["Comment workflows<br/>[SendComment.java]"]
  node_submission["Post submission"]
end

subgraph group_accounts["Accounts and inbox"]
  node_accounts["Account management"]
  node_login["Sign in<br/>[LoginActivity.java]"]
  node_inbox["Inbox and messages<br/>[InboxActivity.java]"]
  node_profile["Profile content"]
  node_room[("Local app data")]
end

subgraph group_custom["Customization"]
  node_themes["Themes and settings"]
  node_themepreview["Theme preview"]
end

subgraph group_media["Media features"]
  node_media["Media viewing"]
  node_downloads["Media downloads"]
  node_video["Video downloads"]
  node_redditapi["Reddit API<br/>[RedditAPI.java]"]
end

node_user(("App user"))

node_user -->|"opens feeds"| node_main
node_user -->|"explores communities"| node_community
node_user -->|"discovers content"| node_search
node_user -->|"opens posts"| node_postviews
node_user -->|"engages"| node_postactions
node_user -->|"comments"| node_comments
node_user -->|"creates posts"| node_submission
node_user -->|"signs in"| node_login
node_user -->|"checks inbox"| node_inbox
node_user -->|"views profile"| node_profile
node_user -->|"customizes"| node_themes
node_user -->|"views media"| node_media
node_main -->|"requests feeds"| node_lemmy
node_community -->|"requests community"| node_lemmy
node_search -->|"searches"| node_lemmy
node_submission -->|"submits gallery"| node_redditapi
node_themes -->|"previews theme"| node_themepreview
node_media -->|"downloads media"| node_downloads
node_media -->|"downloads video"| node_video
node_accounts -->|"persists account data"| node_room

click node_main "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/MainActivity.java"
click node_community "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewSubredditDetailActivity.java"
click node_search "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/SearchActivity.java"
click node_lemmy "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/apis/LemmyAPI.java"
click node_postviews "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewPostDetailActivity.java"
click node_postactions "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/VoteThing.java"
click node_comments "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/comment/SendComment.java"
click node_submission "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/services/SubmitPostService.java"
click node_accounts "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/account/AccountRepository.java"
click node_login "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/LoginActivity.java"
click node_inbox "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/InboxActivity.java"
click node_profile "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewUserDetailActivity.java"
click node_room "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/RedditDataRoomDatabase.java"
click node_themes "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/CustomizeThemeActivity.java"
click node_themepreview "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/CustomThemePreviewActivity.java"
click node_media "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewImageOrGifActivity.java"
click node_downloads "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/services/DownloadMediaService.java"
click node_video "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/services/DownloadRedditVideoService.java"
click node_redditapi "https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/apis/RedditAPI.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_main,node_community,node_search,node_lemmy,node_postviews,node_user toneBlue
class node_postactions,node_comments,node_submission toneAmber
class node_accounts,node_login,node_inbox,node_profile,node_room toneMint
class node_themes,node_themepreview toneRose
class node_media,node_downloads,node_video,node_redditapi toneIndigo
```

## Components

### Browse Lemmy

- [Main feeds](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/MainActivity.java): `app/src/main/java/eu/toldi/infinityforlemmy/activities/MainActivity.java`
- [Community views](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewSubredditDetailActivity.java): `app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewSubredditDetailActivity.java`
- [Search and discovery](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/SearchActivity.java): `app/src/main/java/eu/toldi/infinityforlemmy/activities/SearchActivity.java`
- [Lemmy API](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/apis/LemmyAPI.java): `app/src/main/java/eu/toldi/infinityforlemmy/apis/LemmyAPI.java`
- [Post and comment views](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewPostDetailActivity.java): `app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewPostDetailActivity.java`

### Content actions

- [Votes and saves](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/VoteThing.java): `app/src/main/java/eu/toldi/infinityforlemmy/VoteThing.java`
- [Comment workflows](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/comment/SendComment.java): `app/src/main/java/eu/toldi/infinityforlemmy/comment/SendComment.java`
- [Post submission](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/services/SubmitPostService.java): `app/src/main/java/eu/toldi/infinityforlemmy/services/SubmitPostService.java`

### Accounts and inbox

- [Account management](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/account/AccountRepository.java): `app/src/main/java/eu/toldi/infinityforlemmy/account/AccountRepository.java`
- [Sign in](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/LoginActivity.java): `app/src/main/java/eu/toldi/infinityforlemmy/activities/LoginActivity.java`
- [Inbox and messages](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/InboxActivity.java): `app/src/main/java/eu/toldi/infinityforlemmy/activities/InboxActivity.java`
- [Profile content](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewUserDetailActivity.java): `app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewUserDetailActivity.java`
- [Local app data](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/RedditDataRoomDatabase.java): `app/src/main/java/eu/toldi/infinityforlemmy/RedditDataRoomDatabase.java`

### Customization

- [Themes and settings](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/CustomizeThemeActivity.java): `app/src/main/java/eu/toldi/infinityforlemmy/activities/CustomizeThemeActivity.java`
- [Theme preview](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/CustomThemePreviewActivity.java): `app/src/main/java/eu/toldi/infinityforlemmy/activities/CustomThemePreviewActivity.java`

### Media features

- [Media viewing](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewImageOrGifActivity.java): `app/src/main/java/eu/toldi/infinityforlemmy/activities/ViewImageOrGifActivity.java`
- [Media downloads](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/services/DownloadMediaService.java): `app/src/main/java/eu/toldi/infinityforlemmy/services/DownloadMediaService.java`
- [Video downloads](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/services/DownloadRedditVideoService.java): `app/src/main/java/eu/toldi/infinityforlemmy/services/DownloadRedditVideoService.java`
- [Reddit API](https://github.com/bazsalanszky/eternity/blob/master/app/src/main/java/eu/toldi/infinityforlemmy/apis/RedditAPI.java): `app/src/main/java/eu/toldi/infinityforlemmy/apis/RedditAPI.java`

### Other components

- **App user**

## Connections

- App user → Main feeds: opens feeds
- App user → Community views: explores communities
- App user → Search and discovery: discovers content
- App user → Post and comment views: opens posts
- App user → Votes and saves: engages
- App user → Comment workflows: comments
- App user → Post submission: creates posts
- App user → Sign in: signs in
- App user → Inbox and messages: checks inbox
- App user → Profile content: views profile
- App user → Themes and settings: customizes
- App user → Media viewing: views media
- Main feeds → Lemmy API: requests feeds
- Community views → Lemmy API: requests community
- Search and discovery → Lemmy API: searches
- Post submission → Reddit API: submits gallery
- Themes and settings → Theme preview: previews theme
- Media viewing → Media downloads: downloads media
- Media viewing → Video downloads: downloads video
- Account management → Local app data: persists account data
