# gkrimpask/calculatorapp architecture

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

- Interactive diagram: https://gitdiagram.com/gkrimpask/calculatorapp
- Repository: https://github.com/gkrimpask/calculatorapp

## Overview

CalculatorApp is a small Android calculator: users enter expressions through the phone UI and receive arithmetic results, with percentage, editing, and previous-operation preview capabilities. The README documents an MVC split; the tree identifies the corresponding activity, controller, model, and calculation/formatting source files. Implementation excerpts were not provided, so the graph omits uncertain internal calls and treats the documented MVC interaction as the supported wiring.

Main entry points: [`app/src/main/java/com/example/calculatorapp/MainActivity.kt`](https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/MainActivity.kt) (Main activity), [`app/src/main/java/com/example/calculatorapp/controllers/MainController.kt`](https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/controllers/MainController.kt) (Main controller), [`app/src/main/res/layout/activity_main.xml`](https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/res/layout/activity_main.xml) (Calculator screen), [`app/src/main/java/com/example/calculatorapp/models/MainModel.kt`](https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/models/MainModel.kt) (Main model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Android interface"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_layout["Calculator screen<br/>[activity_main.xml]"]
end

subgraph group_mvc["MVC coordination"]
  node_controller["Main controller<br/>[MainController.kt]"]
  node_model["Main model<br/>[MainModel.kt]"]
end

subgraph group_calculation["Calculation features"]
  node_calculator["Arithmetic operations<br/>[Calculator.kt]"]
  node_formatter["Result formatting<br/>[Formatter.kt]"]
end

node_user(("Calculator user"))

node_user -->|"enters input"| node_activity
node_activity -->|"shows interface"| node_layout
node_activity -->|"forwards input"| node_controller
node_controller -->|"interacts with"| node_model

click node_activity "https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/MainActivity.kt"
click node_layout "https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/res/layout/activity_main.xml"
click node_controller "https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/controllers/MainController.kt"
click node_model "https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/models/MainModel.kt"
click node_calculator "https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/Calculator.kt"
click node_formatter "https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/Formatter.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_layout,node_user toneBlue
class node_controller,node_model toneAmber
class node_calculator,node_formatter toneMint
```

## Components

### Android interface

- [Main activity](https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/MainActivity.kt): `app/src/main/java/com/example/calculatorapp/MainActivity.kt`
- [Calculator screen](https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/res/layout/activity_main.xml): `app/src/main/res/layout/activity_main.xml`

### MVC coordination

- [Main controller](https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/controllers/MainController.kt): `app/src/main/java/com/example/calculatorapp/controllers/MainController.kt`
- [Main model](https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/models/MainModel.kt): `app/src/main/java/com/example/calculatorapp/models/MainModel.kt`

### Calculation features

- [Arithmetic operations](https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/Calculator.kt): `app/src/main/java/com/example/calculatorapp/Calculator.kt`
- [Result formatting](https://github.com/gkrimpask/calculatorapp/blob/main/app/src/main/java/com/example/calculatorapp/Formatter.kt): `app/src/main/java/com/example/calculatorapp/Formatter.kt`

### Other components

- **Calculator user**

## Connections

- Calculator user → Main activity: enters input
- Main activity → Calculator screen: shows interface
- Main activity → Main controller: forwards input
- Main controller → Main model: interacts with
