# nakul-19/blog-wall architecture

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

- Interactive diagram: https://gitdiagram.com/nakul-19/blog-wall
- Repository: https://github.com/nakul-19/blog-wall

## Overview

Blog Wall is an Android blogging app for discovering category-based and trending posts, reading and liking them, commenting, and publishing posts; email sign-in supports authenticated actions. The documented MVVM design separates screens, view models, repositories, and Retrofit APIs. The main browse/read and authentication flows are supported by the README and indexed or excerpted references; several view-model and network implementations were not sampled, so their links are shown as unverified rather than asserted as calls.

Main entry points: [`app/src/main/java/com/nakul/blogWall/repositories/BlogRepository.kt`](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/repositories/BlogRepository.kt) (Blog repository), [`app/src/main/java/com/nakul/blogWall/activities/MainActivity.kt`](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/MainActivity.kt) (Home and trending), [`app/src/main/java/com/nakul/blogWall/repositories/AuthRepository.kt`](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/repositories/AuthRepository.kt) (Auth repository), [`app/src/main/java/com/nakul/blogWall/activities/CategoryActivity.kt`](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/CategoryActivity.kt) (Category browsing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_screens["App screens"]
  node_main["Home and trending<br/>[MainActivity.kt]"]
  node_authscreen["Sign-in and sign-up<br/>[SignInFragment.kt]"]
  node_category["Category browsing"]
  node_blog["Blog details<br/>[BlogActivity.kt]"]
  node_comment["Comments<br/>[CommentActivity.kt]"]
  node_publish["Publish blog<br/>[NewBlogActivity.kt]"]
end

subgraph group_presentation["Presentation state"]
  node_loginvm["Authentication state<br/>[LoginViewModel.kt]"]
  node_mainvm["Home state<br/>[MainViewModel.kt]"]
  node_categoryvm["Category state"]
  node_blogvm["Blog state<br/>[BlogViewModel.kt]"]
  node_commentvm["Comment state"]
  node_publishvm["Publishing state"]
end

subgraph group_domain["Data and repositories"]
  node_authrepo["Auth repository<br/>[AuthRepository.kt]"]
  node_blogrepo["Blog repository<br/>[BlogRepository.kt]"]
  node_models["API data models"]
end

subgraph group_network["Network and session"]
  node_authapi["Auth API<br/>[AuthInterface.kt]"]
  node_blogapi["Blog API<br/>[BlogInterface.kt]"]
  node_tokens["Token manager<br/>[TokenManager.kt]"]
end

node_reader(("Reader or writer"))
node_backend[("Blog Wall backend")]

node_reader -->|"opens app"| node_main
node_reader -->|"signs in"| node_authscreen
node_reader -->|"chooses topic"| node_category
node_reader -->|"writes post"| node_publish
node_main -->|"observes state"| node_mainvm
node_main -.->|"opens category"| node_category
node_main -->|"opens composer"| node_publish
node_authscreen -->|"submits credentials"| node_loginvm
node_category -->|"observes state"| node_categoryvm
node_blog -->|"requests details"| node_blogvm
node_blog -->|"opens comments"| node_comment
node_comment -->|"uses state"| node_commentvm
node_publish -.->|"submits post"| node_publishvm
node_loginvm -->|"authenticates"| node_authrepo
node_authrepo -->|"requests auth"| node_authapi
node_authrepo -->|"uses auth DTOs"| node_models
node_tokens -->|"refreshes tokens"| node_authrepo
node_mainvm -.->|"loads feeds"| node_blogrepo
node_categoryvm -.->|"loads category"| node_blogrepo
node_blogvm -.->|"loads and likes"| node_blogrepo
node_commentvm -.->|"loads and comments"| node_blogrepo
node_publishvm -.->|"creates post"| node_blogrepo
node_blogrepo -->|"requests blog data"| node_blogapi
node_blogrepo -->|"uses blog DTOs"| node_models
node_authapi -.->|"sends auth requests"| node_backend
node_blogapi -.->|"sends blog requests"| node_backend

click node_main "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/MainActivity.kt"
click node_authscreen "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/fragments/SignInFragment.kt"
click node_category "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/CategoryActivity.kt"
click node_blog "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/BlogActivity.kt"
click node_comment "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/CommentActivity.kt"
click node_publish "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/NewBlogActivity.kt"
click node_loginvm "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/LoginViewModel.kt"
click node_mainvm "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/MainViewModel.kt"
click node_categoryvm "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/CategoryViewModel.kt"
click node_blogvm "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/BlogViewModel.kt"
click node_commentvm "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/CommentViewModel.kt"
click node_publishvm "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/NewBlogViewModel.kt"
click node_authrepo "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/repositories/AuthRepository.kt"
click node_blogrepo "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/repositories/BlogRepository.kt"
click node_models "https://github.com/nakul-19/blog-wall/tree/android/app/src/main/java/com/nakul/blogWall/models"
click node_authapi "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/network/AuthInterface.kt"
click node_blogapi "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/network/BlogInterface.kt"
click node_tokens "https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/network/TokenManager.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_authscreen,node_category,node_blog,node_comment,node_publish toneBlue
class node_loginvm,node_mainvm,node_categoryvm,node_blogvm,node_commentvm,node_publishvm,node_backend toneAmber
class node_authrepo,node_blogrepo,node_models toneMint
class node_authapi,node_blogapi,node_tokens toneRose
class node_reader toneIndigo
```

## Components

### App screens

- [Home and trending](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/MainActivity.kt): `app/src/main/java/com/nakul/blogWall/activities/MainActivity.kt`
- [Sign-in and sign-up](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/fragments/SignInFragment.kt): `app/src/main/java/com/nakul/blogWall/fragments/SignInFragment.kt`
- [Category browsing](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/CategoryActivity.kt): `app/src/main/java/com/nakul/blogWall/activities/CategoryActivity.kt`
- [Blog details](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/BlogActivity.kt): `app/src/main/java/com/nakul/blogWall/activities/BlogActivity.kt`
- [Comments](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/CommentActivity.kt): `app/src/main/java/com/nakul/blogWall/activities/CommentActivity.kt`
- [Publish blog](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/activities/NewBlogActivity.kt): `app/src/main/java/com/nakul/blogWall/activities/NewBlogActivity.kt`

### Presentation state

- [Authentication state](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/LoginViewModel.kt): `app/src/main/java/com/nakul/blogWall/viewmodels/LoginViewModel.kt`
- [Home state](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/MainViewModel.kt): `app/src/main/java/com/nakul/blogWall/viewmodels/MainViewModel.kt`
- [Category state](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/CategoryViewModel.kt): `app/src/main/java/com/nakul/blogWall/viewmodels/CategoryViewModel.kt`
- [Blog state](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/BlogViewModel.kt): `app/src/main/java/com/nakul/blogWall/viewmodels/BlogViewModel.kt`
- [Comment state](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/CommentViewModel.kt): `app/src/main/java/com/nakul/blogWall/viewmodels/CommentViewModel.kt`
- [Publishing state](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/viewmodels/NewBlogViewModel.kt): `app/src/main/java/com/nakul/blogWall/viewmodels/NewBlogViewModel.kt`

### Data and repositories

- [Auth repository](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/repositories/AuthRepository.kt): `app/src/main/java/com/nakul/blogWall/repositories/AuthRepository.kt`
- [Blog repository](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/repositories/BlogRepository.kt): `app/src/main/java/com/nakul/blogWall/repositories/BlogRepository.kt`
- [API data models](https://github.com/nakul-19/blog-wall/tree/android/app/src/main/java/com/nakul/blogWall/models): `app/src/main/java/com/nakul/blogWall/models`

### Network and session

- [Auth API](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/network/AuthInterface.kt): `app/src/main/java/com/nakul/blogWall/network/AuthInterface.kt`
- [Blog API](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/network/BlogInterface.kt): `app/src/main/java/com/nakul/blogWall/network/BlogInterface.kt`
- [Token manager](https://github.com/nakul-19/blog-wall/blob/android/app/src/main/java/com/nakul/blogWall/network/TokenManager.kt): `app/src/main/java/com/nakul/blogWall/network/TokenManager.kt`

### Other components

- **Reader or writer**
- **Blog Wall backend**

## Connections

- Reader or writer → Home and trending: opens app (evidence: `README.md`)
- Reader or writer → Sign-in and sign-up: signs in (evidence: `README.md`)
- Reader or writer → Category browsing: chooses topic (evidence: `README.md`)
- Reader or writer → Publish blog: writes post (evidence: `README.md`)
- Home and trending → Home state: observes state (evidence: `app/src/main/java/com/nakul/blogWall/activities/MainActivity.kt`)
- Home and trending → Category browsing: opens category
- Home and trending → Publish blog: opens composer (evidence: `app/src/main/java/com/nakul/blogWall/activities/MainActivity.kt`)
- Sign-in and sign-up → Authentication state: submits credentials (evidence: `app/src/main/java/com/nakul/blogWall/fragments/SignInFragment.kt`)
- Category browsing → Category state: observes state (evidence: `app/src/main/java/com/nakul/blogWall/activities/CategoryActivity.kt`)
- Blog details → Blog state: requests details (evidence: `app/src/main/java/com/nakul/blogWall/activities/BlogActivity.kt`)
- Blog details → Comments: opens comments (evidence: `app/src/main/java/com/nakul/blogWall/activities/BlogActivity.kt`)
- Comments → Comment state: uses state (evidence: `app/src/main/java/com/nakul/blogWall/activities/CommentActivity.kt`)
- Publish blog → Publishing state: submits post (evidence: `app/src/main/java/com/nakul/blogWall/activities/NewBlogActivity.kt`)
- Authentication state → Auth repository: authenticates (evidence: `app/src/main/java/com/nakul/blogWall/viewmodels/LoginViewModel.kt`)
- Auth repository → Auth API: requests auth (evidence: `app/src/main/java/com/nakul/blogWall/repositories/AuthRepository.kt`)
- Auth repository → API data models: uses auth DTOs (evidence: `app/src/main/java/com/nakul/blogWall/repositories/AuthRepository.kt`)
- Token manager → Auth repository: refreshes tokens (evidence: `app/src/main/java/com/nakul/blogWall/network/TokenManager.kt`)
- Home state → Blog repository: loads feeds
- Category state → Blog repository: loads category
- Blog state → Blog repository: loads and likes (evidence: `app/src/main/java/com/nakul/blogWall/viewmodels/BlogViewModel.kt`)
- Comment state → Blog repository: loads and comments (evidence: `app/src/main/java/com/nakul/blogWall/viewmodels/CommentViewModel.kt`)
- Publishing state → Blog repository: creates post (evidence: `app/src/main/java/com/nakul/blogWall/viewmodels/NewBlogViewModel.kt`)
- Blog repository → Blog API: requests blog data (evidence: `app/src/main/java/com/nakul/blogWall/repositories/BlogRepository.kt`)
- Blog repository → API data models: uses blog DTOs (evidence: `app/src/main/java/com/nakul/blogWall/repositories/BlogRepository.kt`)
- Auth API → Blog Wall backend: sends auth requests
- Blog API → Blog Wall backend: sends blog requests
