# hoosammr/inchmeter architecture

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

- Interactive diagram: https://gitdiagram.com/hoosammr/inchmeter
- Repository: https://github.com/hoosammr/inchmeter

## Overview

InchMeter is an Android app for converting measurements and tolerances. The README documents the domain behavior: UnitValue converts numeric values between units, while Tolerance converts the measured, minimum, and maximum values together. The tree also shows UI, view-model, repository, and dependency-injection layers, but their wiring cannot be confirmed from the sampled source, so no runtime links between them are asserted.

Main entry points: [`app/src/main/java/com/example/inchmeter/model/UnitValue.kt`](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/model/UnitValue.kt) (UnitValue), [`app/src/main/java/com/example/inchmeter/model/Tolerance.kt`](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/model/Tolerance.kt) (Tolerance)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Android app"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_application["InchMeter app<br/>[InchMeterApp.kt]"]
end

subgraph group_ui["Conversion UI"]
  node_convert_view["Convert view<br/>[ConvertView.kt]"]
  node_measure_compose["Measure display<br/>[MeasureCompose.kt]"]
  node_measure_input["Measure input"]
  node_unit_selection["Unit selection<br/>[UnitSelection.kt]"]
  node_viewmodel["Conversion view model"]
end

subgraph group_domain["Measurement domain"]
  node_unit_value["UnitValue<br/>[UnitValue.kt]"]
  node_tolerance["Tolerance<br/>[Tolerance.kt]"]
end

subgraph group_infra["App infrastructure"]
  node_repository["Conversion repository"]
  node_di["Dependency injection<br/>[AppModule.kt]"]
end

node_user(("User"))

node_unit_value -->|"converts values"| node_unit_value
node_tolerance -->|"converts units"| node_unit_value

click node_activity "https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/MainActivity.kt"
click node_application "https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/InchMeterApp.kt"
click node_convert_view "https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/view/ConvertView.kt"
click node_measure_compose "https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/view/MeasureCompose.kt"
click node_measure_input "https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/view/MeasureInputCompose.kt"
click node_unit_selection "https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/view/UnitSelection.kt"
click node_viewmodel "https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/viewmodel/MeasureConvertViewModel.kt"
click node_repository "https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/repository/ConvertRepository.kt"
click node_di "https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/di/AppModule.kt"
click node_unit_value "https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/model/UnitValue.kt"
click node_tolerance "https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/model/Tolerance.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_activity,node_application,node_user toneBlue
class node_convert_view,node_measure_compose,node_measure_input,node_unit_selection,node_viewmodel toneAmber
class node_unit_value,node_tolerance toneMint
class node_repository,node_di toneRose
```

## Components

### Android app

- [Main activity](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/MainActivity.kt): `app/src/main/java/com/example/inchmeter/MainActivity.kt`
- [InchMeter app](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/InchMeterApp.kt): `app/src/main/java/com/example/inchmeter/InchMeterApp.kt`

### Conversion UI

- [Convert view](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/view/ConvertView.kt): `app/src/main/java/com/example/inchmeter/view/ConvertView.kt`
- [Measure display](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/view/MeasureCompose.kt): `app/src/main/java/com/example/inchmeter/view/MeasureCompose.kt`
- [Measure input](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/view/MeasureInputCompose.kt): `app/src/main/java/com/example/inchmeter/view/MeasureInputCompose.kt`
- [Unit selection](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/view/UnitSelection.kt): `app/src/main/java/com/example/inchmeter/view/UnitSelection.kt`
- [Conversion view model](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/viewmodel/MeasureConvertViewModel.kt): `app/src/main/java/com/example/inchmeter/viewmodel/MeasureConvertViewModel.kt`

### Measurement domain

- [UnitValue](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/model/UnitValue.kt): `app/src/main/java/com/example/inchmeter/model/UnitValue.kt`
- [Tolerance](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/model/Tolerance.kt): `app/src/main/java/com/example/inchmeter/model/Tolerance.kt`

### App infrastructure

- [Conversion repository](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/repository/ConvertRepository.kt): `app/src/main/java/com/example/inchmeter/repository/ConvertRepository.kt`
- [Dependency injection](https://github.com/hoosammr/inchmeter/blob/mainn/app/src/main/java/com/example/inchmeter/di/AppModule.kt): `app/src/main/java/com/example/inchmeter/di/AppModule.kt`

### Other components

- **User**

## Connections

- UnitValue → UnitValue: converts values
- Tolerance → UnitValue: converts units
