# amank-iitr/bhavanapp2023 architecture

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

- Interactive diagram: https://gitdiagram.com/amank-iitr/bhavanapp2023
- Repository: https://github.com/amank-iitr/bhavanapp2023

## Overview

1. **Project type and runtime**
   - This is a single-module **Android app written in Kotlin**.
   - The app is structured around multiple **Activities** and Android XML layouts rather than a separate backend service in this repo.

2. **Top-level application flow**
   - The main user journey appears to be:
     - `SplashActivity` → `MainActivity` → `LogIn` / `SignUp` → `chatActivity`
   - The splash screen is a dedicated entry UI, and the rest of the app likely branches into authentication and then chat.

3. **Presentation layer: Activities**
   - Core screens are implemented as separate Activities:
     - `SplashActivity.kt`
     - `MainActivity.kt`
     - `LogIn.kt`
     - `SignUp.kt`
     - `chatActivity.kt`
   - This suggests a classic Android navigation model where each screen owns its own UI and lifecycle.

4. **Chat subsystem**
   - `chatActivity` is the main conversational screen.
   - The presence of `Message.kt`, `MessageAdapter.kt`, `receive.xml`, and `sent.xml` indicates a **RecyclerView-based chat timeline** with two message bubble types: incoming and outgoing.
   - `User.kt` and `UserAdapter.kt` suggest a second list-based UI, likely for selecting people or showing contacts/conversation peers.

5. **Data models**
   - `Message.kt` is the domain object for chat payloads.
   - `User.kt` is the domain object for user/contact identity.
   - These are the main data boundaries between UI screens and list adapters.

6. **Adapters and list rendering**
   - `MessageAdapter.kt` and `UserAdapter.kt` are the transformation layer between model objects and rendered rows.
   - Their existence implies the app uses Android list components such as **RecyclerView**, with custom row layouts:
     - `receive.xml`
     - `sent.xml`
     - `user_layout.xml`

7. **UI resource structure**
   - Layouts are organized per screen under `res/layout`, one file per activity plus reusable row templates.
   - Drawable resources include backgrounds, gradients, button styles, and splash visuals, which means a large part of the app’s identity is driven by XML styling rather than code.
   - `res/xml/activity_splash_scene.xml` indicates the splash screen uses a dedicated Android splash configuration.

8. **Styling and theming**
   - `values/themes.xml`, `values-night/themes.xml`, `colors.xml`, and custom drawable shapes show the app uses standard Android theming with custom UI assets.
   - Separate night theme support is present, so the UI has at least basic dark-mode handling.

9. **Platform and service integration**
   - `google-services.json` is included, which strongly suggests the app is configured for **Google/Firebase services**.
   - The exact Firebase features are not visible from the tree, but this file means external cloud integration is an important architectural boundary.

10. **Manifest and launch configuration**
   - `AndroidManifest.xml` defines the app’s activity graph, launch entry point, and component registration.
   - Combined with the splash resources, this is where startup behavior and screen transitions are anchored.

11. **Build and tooling**
   - The project uses **Gradle** with the standard Android wrapper (`gradlew`, `gradle/wrapper`).
   - `app/proguard-rules.pro` shows release obfuscation/minification is expected.
   - Test support is split into:
     - `src/test` for local JVM tests
     - `src/androidTest` for instrumented device/emulator tests

12. **Architecture summary for a diagram**
   - At a high level, the architecture is:
     - **Android UI layer**: Activities and XML screens
     - **List rendering layer**: Adapters for messages/users
     - **Model layer**: `Message` and `User`
     - **External services layer**: Google/Firebase configuration via `google-services.json`
   - The main data flow is user interaction in Activities → model objects → adapters → rendered chat/contact lists, with app startup and screen routing controlled by the manifest and splash setup.

Main entry points: [`app/src/main/java/com/example/bhavanapp/chatActivity.kt`](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/chatActivity.kt) (Chat), [`app/src/main/AndroidManifest.xml`](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/AndroidManifest.xml) (Manifest), [`app/src/main/java/com/example/bhavanapp/MainActivity.kt`](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/MainActivity.kt) (Main), [`app/src/main/java/com/example/bhavanapp/MessageAdapter.kt`](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/MessageAdapter.kt) (Message adapter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_group_app["App module"]
  node_node_build["Gradle build<br/>build config<br/>[build.gradle]"]
end

subgraph group_group_flow["Screen flow"]
  node_node_manifest["Manifest"]
  node_node_splash["Splash<br/>activity<br/>[SplashActivity.kt]"]
  node_node_main["Main<br/>activity<br/>[MainActivity.kt]"]
  node_node_login["Login<br/>activity<br/>[LogIn.kt]"]
  node_node_signup["Sign up<br/>activity<br/>[SignUp.kt]"]
  node_node_chat["Chat<br/>activity<br/>[chatActivity.kt]"]
end

subgraph group_group_chat["Chat layer"]
  node_node_message_model["Message<br/>model<br/>[Message.kt]"]
  node_node_user_model["User<br/>model<br/>[User.kt]"]
  node_node_message_adapter["Message adapter<br/>recycler adapter<br/>[MessageAdapter.kt]"]
  node_node_user_adapter["User adapter<br/>recycler adapter<br/>[UserAdapter.kt]"]
end

subgraph group_group_ui["Resources"]
  node_node_activity_splash_layout["Splash layout<br/>activity layout"]
  node_node_activity_main_layout["Main layout<br/>activity layout<br/>[activity_main.xml]"]
  node_node_activity_login_layout["Login layout<br/>activity layout"]
  node_node_activity_signup_layout["Sign up layout<br/>activity layout"]
  node_node_activity_chat_layout["Chat layout<br/>activity layout<br/>[activity_chat.xml]"]
  node_node_receive_row["Received row<br/>row layout<br/>[receive.xml]"]
  node_node_sent_row["Sent row<br/>row layout<br/>[sent.xml]"]
  node_node_user_row["User row<br/>row layout<br/>[user_layout.xml]"]
  node_node_themes["Themes<br/>theme resources<br/>[themes.xml]"]
  node_node_night_themes["Night theme<br/>theme resources<br/>[themes.xml]"]
  node_node_splash_scene["Splash scene<br/>xml config"]
end

subgraph group_group_integrations["Integration"]
  node_node_google_services["Google services<br/>firebase config"]
end

node_node_manifest -->|"launches"| node_node_splash
node_node_manifest -->|"registers"| node_node_main
node_node_manifest -->|"registers"| node_node_login
node_node_manifest -->|"registers"| node_node_signup
node_node_manifest -->|"registers"| node_node_chat
node_node_splash -->|"continues to"| node_node_main
node_node_main -->|"routes to"| node_node_login
node_node_main -->|"routes to"| node_node_signup
node_node_login -->|"enters"| node_node_chat
node_node_signup -->|"enters"| node_node_chat
node_node_chat -->|"renders with"| node_node_message_adapter
node_node_chat -->|"renders with"| node_node_user_adapter
node_node_message_adapter -->|"binds"| node_node_message_model
node_node_user_adapter -->|"binds"| node_node_user_model
node_node_message_adapter -->|"uses"| node_node_sent_row
node_node_message_adapter -->|"uses"| node_node_receive_row
node_node_user_adapter -->|"uses"| node_node_user_row
node_node_splash -->|"inflates"| node_node_activity_splash_layout
node_node_main -->|"inflates"| node_node_activity_main_layout
node_node_login -->|"inflates"| node_node_activity_login_layout
node_node_signup -->|"inflates"| node_node_activity_signup_layout
node_node_chat -->|"inflates"| node_node_activity_chat_layout
node_node_themes -->|"styles"| node_node_activity_main_layout
node_node_night_themes -->|"extends"| node_node_themes
node_node_splash_scene -->|"configures"| node_node_splash
node_node_google_services -->|"consumed by"| node_node_build

click node_node_manifest "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/AndroidManifest.xml"
click node_node_splash "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/SplashActivity.kt"
click node_node_main "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/MainActivity.kt"
click node_node_login "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/LogIn.kt"
click node_node_signup "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/SignUp.kt"
click node_node_chat "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/chatActivity.kt"
click node_node_message_model "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/Message.kt"
click node_node_user_model "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/User.kt"
click node_node_message_adapter "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/MessageAdapter.kt"
click node_node_user_adapter "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/UserAdapter.kt"
click node_node_activity_splash_layout "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/activity_splash.xml"
click node_node_activity_main_layout "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/activity_main.xml"
click node_node_activity_login_layout "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/activity_log_in.xml"
click node_node_activity_signup_layout "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/activity_sign_up.xml"
click node_node_activity_chat_layout "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/activity_chat.xml"
click node_node_receive_row "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/receive.xml"
click node_node_sent_row "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/sent.xml"
click node_node_user_row "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/user_layout.xml"
click node_node_themes "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/values/themes.xml"
click node_node_night_themes "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/values-night/themes.xml"
click node_node_splash_scene "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/xml/activity_splash_scene.xml"
click node_node_google_services "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/google-services.json"
click node_node_build "https://github.com/amank-iitr/bhavanapp2023/blob/main/app/build.gradle"

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_node_build toneBlue
class node_node_manifest,node_node_splash,node_node_main,node_node_login,node_node_signup,node_node_chat toneAmber
class node_node_message_model,node_node_user_model,node_node_message_adapter,node_node_user_adapter toneMint
class node_node_activity_splash_layout,node_node_activity_main_layout,node_node_activity_login_layout,node_node_activity_signup_layout,node_node_activity_chat_layout,node_node_receive_row,node_node_sent_row,node_node_user_row,node_node_themes,node_node_night_themes,node_node_splash_scene toneRose
class node_node_google_services toneIndigo
```

## Components

### App module

Single-module Android application

- [Gradle build](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/build.gradle): build config · Android module build and dependency configuration · `app/build.gradle`

### Screen flow

Entry and navigation between activities

- [Manifest](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/AndroidManifest.xml): android manifest · Registers app components and launch entry points · `app/src/main/AndroidManifest.xml`
- [Splash](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/SplashActivity.kt): activity · Startup screen and entry UI · `app/src/main/java/com/example/bhavanapp/SplashActivity.kt`
- [Main](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/MainActivity.kt): activity · Primary landing screen after launch · `app/src/main/java/com/example/bhavanapp/MainActivity.kt`
- [Login](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/LogIn.kt): activity · Authentication screen for existing users · `app/src/main/java/com/example/bhavanapp/LogIn.kt`
- [Sign up](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/SignUp.kt): activity · Account creation screen · `app/src/main/java/com/example/bhavanapp/SignUp.kt`
- [Chat](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/chatActivity.kt): activity · Main conversational screen · `app/src/main/java/com/example/bhavanapp/chatActivity.kt`

### Chat layer

Chat and list rendering components

- [Message](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/Message.kt): model · Chat message data object · `app/src/main/java/com/example/bhavanapp/Message.kt`
- [User](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/User.kt): model · User or contact identity object · `app/src/main/java/com/example/bhavanapp/User.kt`
- [Message adapter](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/MessageAdapter.kt): recycler adapter · Binds messages to sent and received rows · `app/src/main/java/com/example/bhavanapp/MessageAdapter.kt`
- [User adapter](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/java/com/example/bhavanapp/UserAdapter.kt): recycler adapter · Binds user data to list rows · `app/src/main/java/com/example/bhavanapp/UserAdapter.kt`

### Resources

Layouts, themes, and visual assets

- [Splash layout](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/activity_splash.xml): activity layout · UI for the splash screen · `app/src/main/res/layout/activity_splash.xml`
- [Main layout](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/activity_main.xml): activity layout · UI for the main landing screen · `app/src/main/res/layout/activity_main.xml`
- [Login layout](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/activity_log_in.xml): activity layout · UI for authentication · `app/src/main/res/layout/activity_log_in.xml`
- [Sign up layout](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/activity_sign_up.xml): activity layout · UI for account creation · `app/src/main/res/layout/activity_sign_up.xml`
- [Chat layout](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/activity_chat.xml): activity layout · UI for chat interactions · `app/src/main/res/layout/activity_chat.xml`
- [Received row](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/receive.xml): row layout · Bubble layout for incoming messages · `app/src/main/res/layout/receive.xml`
- [Sent row](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/sent.xml): row layout · Bubble layout for outgoing messages · `app/src/main/res/layout/sent.xml`
- [User row](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/layout/user_layout.xml): row layout · Row layout for user/contact lists · `app/src/main/res/layout/user_layout.xml`
- [Themes](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/values/themes.xml): theme resources · Light and dark app theming · `app/src/main/res/values/themes.xml`
- [Night theme](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/values-night/themes.xml): theme resources · Dark mode theme overrides · `app/src/main/res/values-night/themes.xml`
- [Splash scene](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/src/main/res/xml/activity_splash_scene.xml): xml config · Splash screen platform configuration · `app/src/main/res/xml/activity_splash_scene.xml`

### Integration

External configuration and platform wiring

- [Google services](https://github.com/amank-iitr/bhavanapp2023/blob/main/app/google-services.json): firebase config · External service configuration for Google or Firebase · `app/google-services.json`

## Connections

- Manifest → Splash: launches · Declares splash as an app entry component
- Manifest → Main: registers · Registers the main activity
- Manifest → Login: registers · Registers the login screen
- Manifest → Sign up: registers · Registers the sign-up screen
- Manifest → Chat: registers · Registers the chat screen
- Splash → Main: continues to · Startup flow advances into the main screen
- Main → Login: routes to · Main flow can branch into authentication
- Main → Sign up: routes to · Main flow can branch into account creation
- Login → Chat: enters · Successful auth leads to chat
- Sign up → Chat: enters · New account flow leads to chat
- Chat → Message adapter: renders with · Chat screen uses the message adapter for its timeline
- Chat → User adapter: renders with · Chat screen likely uses the user adapter for contacts or peers
- Message adapter → Message: binds · Message adapter consumes message data
- User adapter → User: binds · User adapter consumes user data
- Message adapter → Sent row: uses · Outgoing message row template
- Message adapter → Received row: uses · Incoming message row template
- User adapter → User row: uses · User row template
- Splash → Splash layout: inflates · Splash activity uses its screen layout
- Main → Main layout: inflates · Main activity uses its screen layout
- Login → Login layout: inflates · Login activity uses its screen layout
- Sign up → Sign up layout: inflates · Sign-up activity uses its screen layout
- Chat → Chat layout: inflates · Chat activity uses its screen layout
- Themes → Main layout: styles · Shared theme foundation for app screens
- Night theme → Themes: extends · Dark mode variant of the base theme
- Splash scene → Splash: configures · Splash configuration supports the startup screen
- Google services → Gradle build: consumed by · Firebase or Google services are wired through the app build
