# zzznai/mobileapps2025-2401321010 architecture

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

- Interactive diagram: https://gitdiagram.com/zzznai/mobileapps2025-2401321010
- Repository: https://github.com/zzznai/mobileapps2025-2401321010

## Overview

This is an Android plant-care app. The user opens a plant list, selects a plant to view its care details, and can see watering timing/status based on plant, species, or category data. The graph also includes seasonal species guidance and database catalog seeding. The README describes no additional capabilities; several relationships rely on the SOURCE INDEX because the corresponding source was not excerpted.

Main entry points: [`app/src/main/java/com/naim/plantcare/logic/WateringCalculator.kt`](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/logic/WateringCalculator.kt) (Watering calculator), [`app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailActivity.kt`](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailActivity.kt) (Plant detail screen), [`app/src/main/java/com/naim/plantcare/data/repository/PlantRepository.kt`](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/repository/PlantRepository.kt) (Plant repository), [`app/src/main/java/com/naim/plantcare/data/entity/PlantWithDetails.kt`](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/entity/PlantWithDetails.kt) (Plant with details)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Plant screens"]
  node_main["Plant list screen<br/>[MainActivity.kt]"]
  node_listvm["List state"]
  node_adapter["Plant list adapter<br/>[PlantAdapter.kt]"]
  node_detail["Plant detail screen"]
  node_detailvm["Detail state"]
  node_plantitem["Care display model<br/>[PlantItem.kt]"]
  node_status["Watering status text"]
end

subgraph group_care["Care guidance"]
  node_calculator["Watering calculator"]
  node_season["Season rules<br/>[Season.kt]"]
end

subgraph group_data["Plant data"]
  node_repository["Plant repository<br/>[PlantRepository.kt]"]
  node_db[("Room database")]
  node_plantdao["Plant queries<br/>[PlantDao.kt]"]
  node_categorydao["Category queries<br/>[CategoryDao.kt]"]
  node_speciesdao["Species queries<br/>[SpeciesDao.kt]"]
  node_plant["Plant record<br/>[Plant.kt]"]
  node_category["Plant category<br/>[PlantCategory.kt]"]
  node_details["Plant with details"]
end

subgraph group_catalog["Species catalog"]
  node_species["Species guidance<br/>[PlantSpecies.kt]"]
  node_light["Light levels<br/>[LightLevel.kt]"]
  node_parser["Species CSV parser"]
  node_csv["Species data<br/>[plant_species.csv]"]
end

node_user(("Plant owner"))

node_user -.->|"opens"| node_main
node_main -->|"creates"| node_listvm
node_main -->|"displays"| node_adapter
node_main -->|"opens selection"| node_detail
node_listvm -->|"observes"| node_repository
node_listvm -->|"calculates"| node_calculator
node_adapter -->|"renders"| node_plantitem
node_adapter -->|"renders"| node_status
node_detail -->|"creates"| node_detailvm
node_detail -->|"provides data"| node_repository
node_detail -->|"shows care"| node_plantitem
node_detail -->|"shows status"| node_status
node_detail -->|"uses seasons"| node_season
node_detailvm -->|"loads plant"| node_repository
node_detailvm -->|"calculates"| node_calculator
node_plantitem -->|"derives timing"| node_calculator
node_status -->|"formats status"| node_calculator
node_calculator -->|"selects season"| node_season
node_calculator -->|"evaluates"| node_details
node_calculator -->|"reads intervals"| node_species
node_repository -->|"queries plants"| node_plantdao
node_repository -->|"queries categories"| node_categorydao
node_repository -->|"queries species"| node_speciesdao
node_db -->|"provides DAO"| node_plantdao
node_db -->|"provides DAO"| node_categorydao
node_db -->|"provides DAO"| node_speciesdao
node_db -->|"loads catalog"| node_parser
node_parser -->|"parses"| node_csv
node_parser -->|"creates records"| node_species
node_species -->|"maps intervals"| node_season
node_species -->|"stores level"| node_light
node_plantdao -->|"returns joined data"| node_details
node_plant -->|"references"| node_category
node_details -->|"embeds"| node_plant
node_details -->|"relates"| node_category
node_details -->|"relates"| node_species

click node_main "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/list/MainActivity.kt"
click node_listvm "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/list/PlantListViewModel.kt"
click node_adapter "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/list/PlantAdapter.kt"
click node_detail "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailActivity.kt"
click node_detailvm "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailViewModel.kt"
click node_plantitem "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/PlantItem.kt"
click node_status "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/WateringStatusText.kt"
click node_calculator "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/logic/WateringCalculator.kt"
click node_season "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/logic/Season.kt"
click node_repository "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/repository/PlantRepository.kt"
click node_db "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/PlantCareDatabase.kt"
click node_plantdao "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/dao/PlantDao.kt"
click node_categorydao "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/dao/CategoryDao.kt"
click node_speciesdao "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/dao/SpeciesDao.kt"
click node_plant "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/entity/Plant.kt"
click node_category "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/entity/PlantCategory.kt"
click node_details "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/entity/PlantWithDetails.kt"
click node_species "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/entity/PlantSpecies.kt"
click node_light "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/entity/LightLevel.kt"
click node_parser "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/SpeciesCsvParser.kt"
click node_csv "https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/assets/plant_species.csv"

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_listvm,node_adapter,node_detail,node_detailvm,node_plantitem,node_status toneBlue
class node_calculator,node_season toneAmber
class node_repository,node_db,node_plantdao,node_categorydao,node_speciesdao,node_plant,node_category,node_details toneMint
class node_species,node_light,node_parser,node_csv toneRose
class node_user toneIndigo
```

## Components

### Plant screens

- [Plant list screen](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/list/MainActivity.kt): `app/src/main/java/com/naim/plantcare/ui/list/MainActivity.kt`
- [List state](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/list/PlantListViewModel.kt): `app/src/main/java/com/naim/plantcare/ui/list/PlantListViewModel.kt`
- [Plant list adapter](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/list/PlantAdapter.kt): `app/src/main/java/com/naim/plantcare/ui/list/PlantAdapter.kt`
- [Plant detail screen](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailActivity.kt): `app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailActivity.kt`
- [Detail state](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailViewModel.kt): `app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailViewModel.kt`
- [Care display model](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/PlantItem.kt): `app/src/main/java/com/naim/plantcare/ui/PlantItem.kt`
- [Watering status text](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/ui/WateringStatusText.kt): `app/src/main/java/com/naim/plantcare/ui/WateringStatusText.kt`

### Care guidance

- [Watering calculator](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/logic/WateringCalculator.kt): `app/src/main/java/com/naim/plantcare/logic/WateringCalculator.kt`
- [Season rules](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/logic/Season.kt): `app/src/main/java/com/naim/plantcare/logic/Season.kt`

### Plant data

- [Plant repository](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/repository/PlantRepository.kt): `app/src/main/java/com/naim/plantcare/data/repository/PlantRepository.kt`
- [Room database](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/PlantCareDatabase.kt): `app/src/main/java/com/naim/plantcare/data/PlantCareDatabase.kt`
- [Plant queries](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/dao/PlantDao.kt): `app/src/main/java/com/naim/plantcare/data/dao/PlantDao.kt`
- [Category queries](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/dao/CategoryDao.kt): `app/src/main/java/com/naim/plantcare/data/dao/CategoryDao.kt`
- [Species queries](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/dao/SpeciesDao.kt): `app/src/main/java/com/naim/plantcare/data/dao/SpeciesDao.kt`
- [Plant record](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/entity/Plant.kt): `app/src/main/java/com/naim/plantcare/data/entity/Plant.kt`
- [Plant category](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/entity/PlantCategory.kt): `app/src/main/java/com/naim/plantcare/data/entity/PlantCategory.kt`
- [Plant with details](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/entity/PlantWithDetails.kt): `app/src/main/java/com/naim/plantcare/data/entity/PlantWithDetails.kt`

### Species catalog

- [Species guidance](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/entity/PlantSpecies.kt): `app/src/main/java/com/naim/plantcare/data/entity/PlantSpecies.kt`
- [Light levels](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/entity/LightLevel.kt): `app/src/main/java/com/naim/plantcare/data/entity/LightLevel.kt`
- [Species CSV parser](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/java/com/naim/plantcare/data/SpeciesCsvParser.kt): `app/src/main/java/com/naim/plantcare/data/SpeciesCsvParser.kt`
- [Species data](https://github.com/zzznai/mobileapps2025-2401321010/blob/main/app/src/main/assets/plant_species.csv): `app/src/main/assets/plant_species.csv`

### Other components

- **Plant owner**

## Connections

- Plant owner → Plant list screen: opens
- Plant list screen → List state: creates (evidence: `app/src/main/java/com/naim/plantcare/ui/list/MainActivity.kt`)
- Plant list screen → Plant list adapter: displays (evidence: `app/src/main/java/com/naim/plantcare/ui/list/MainActivity.kt`)
- Plant list screen → Plant detail screen: opens selection (evidence: `app/src/main/java/com/naim/plantcare/ui/list/MainActivity.kt`)
- List state → Plant repository: observes (evidence: `app/src/main/java/com/naim/plantcare/ui/list/PlantListViewModel.kt`)
- List state → Watering calculator: calculates (evidence: `app/src/main/java/com/naim/plantcare/ui/list/PlantListViewModel.kt`)
- Plant list adapter → Care display model: renders (evidence: `app/src/main/java/com/naim/plantcare/ui/list/PlantAdapter.kt`)
- Plant list adapter → Watering status text: renders (evidence: `app/src/main/java/com/naim/plantcare/ui/list/PlantAdapter.kt`)
- Plant detail screen → Detail state: creates (evidence: `app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailActivity.kt`)
- Plant detail screen → Plant repository: provides data (evidence: `app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailActivity.kt`)
- Plant detail screen → Care display model: shows care (evidence: `app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailActivity.kt`)
- Plant detail screen → Watering status text: shows status (evidence: `app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailActivity.kt`)
- Plant detail screen → Season rules: uses seasons (evidence: `app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailActivity.kt`)
- Detail state → Plant repository: loads plant (evidence: `app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailViewModel.kt`)
- Detail state → Watering calculator: calculates (evidence: `app/src/main/java/com/naim/plantcare/ui/detail/PlantDetailViewModel.kt`)
- Care display model → Watering calculator: derives timing (evidence: `app/src/main/java/com/naim/plantcare/ui/PlantItem.kt`)
- Watering status text → Watering calculator: formats status (evidence: `app/src/main/java/com/naim/plantcare/ui/WateringStatusText.kt`)
- Watering calculator → Season rules: selects season (evidence: `app/src/main/java/com/naim/plantcare/logic/WateringCalculator.kt`)
- Watering calculator → Plant with details: evaluates (evidence: `app/src/main/java/com/naim/plantcare/logic/WateringCalculator.kt`)
- Watering calculator → Species guidance: reads intervals (evidence: `app/src/main/java/com/naim/plantcare/logic/WateringCalculator.kt`)
- Plant repository → Plant queries: queries plants (evidence: `app/src/main/java/com/naim/plantcare/data/repository/PlantRepository.kt`)
- Plant repository → Category queries: queries categories (evidence: `app/src/main/java/com/naim/plantcare/data/repository/PlantRepository.kt`)
- Plant repository → Species queries: queries species (evidence: `app/src/main/java/com/naim/plantcare/data/repository/PlantRepository.kt`)
- Room database → Plant queries: provides DAO (evidence: `app/src/main/java/com/naim/plantcare/data/PlantCareDatabase.kt`)
- Room database → Category queries: provides DAO (evidence: `app/src/main/java/com/naim/plantcare/data/PlantCareDatabase.kt`)
- Room database → Species queries: provides DAO (evidence: `app/src/main/java/com/naim/plantcare/data/PlantCareDatabase.kt`)
- Room database → Species CSV parser: loads catalog (evidence: `app/src/main/java/com/naim/plantcare/data/PlantCareDatabase.kt`)
- Species CSV parser → Species data: parses
- Species CSV parser → Species guidance: creates records (evidence: `app/src/main/java/com/naim/plantcare/data/SpeciesCsvParser.kt`)
- Species guidance → Season rules: maps intervals (evidence: `app/src/main/java/com/naim/plantcare/data/entity/PlantSpecies.kt`)
- Species guidance → Light levels: stores level (evidence: `app/src/main/java/com/naim/plantcare/data/entity/PlantSpecies.kt`)
- Plant queries → Plant with details: returns joined data (evidence: `app/src/main/java/com/naim/plantcare/data/dao/PlantDao.kt`)
- Plant record → Plant category: references (evidence: `app/src/main/java/com/naim/plantcare/data/entity/Plant.kt`)
- Plant with details → Plant record: embeds (evidence: `app/src/main/java/com/naim/plantcare/data/entity/PlantWithDetails.kt`)
- Plant with details → Plant category: relates (evidence: `app/src/main/java/com/naim/plantcare/data/entity/PlantWithDetails.kt`)
- Plant with details → Species guidance: relates (evidence: `app/src/main/java/com/naim/plantcare/data/entity/PlantWithDetails.kt`)
