# inferi70/westrock-app architecture

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

- Interactive diagram: https://gitdiagram.com/inferi70/westrock-app
- Repository: https://github.com/inferi70/westrock-app

## Overview

WestRock Rotary Die Cutter is an Android app for managing die-cutter records and separately tracking bowling scores. Users navigate to search, add, browse, and detail/edit records; record operations are mediated by a state-model layer and persisted in SQLite. The bowling area supports score entry, player and date/game filtering, averages, and history using its own database. README and filenames establish the main capabilities; several screen and navigation implementations were not sampled, so links between those components are limited to documented routing rather than assumed internal calls.

Main entry points: [`app/src/main/java/com/tb/rotarydiecutter/ui/navigation/AppNav.kt`](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/navigation/AppNav.kt) (App navigation), [`app/src/main/java/com/tb/rotarydiecutter/MainActivity.kt`](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/MainActivity.kt) (Main activity), [`app/src/main/java/com/tb/rotarydiecutter/models/RotaryView.kt`](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/models/RotaryView.kt) (Record state and operations), [`app/src/main/java/com/tb/rotarydiecutter/ui/navigation/BottomNav.kt`](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/navigation/BottomNav.kt) (Bottom navigation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_shell["App shell"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_appnav["App navigation<br/>[AppNav.kt]"]
  node_bottomnav["Bottom navigation<br/>[BottomNav.kt]"]
end

subgraph group_dies["Die records"]
  node_search["Search records<br/>[search.kt]"]
  node_add["Add record<br/>[add.kt]"]
  node_details["Record details<br/>[Detail.kt]"]
  node_recordlist["Dies list<br/>[db.kt]"]
  node_rotaryview["Record state and operations<br/>[RotaryView.kt]"]
end

subgraph group_bowling["Bowling scores"]
  node_bowlscreens["Bowling screens<br/>[BowlingScreens.kt]"]
  node_bowldb["Bowling data access<br/>[BowlingDb.kt]"]
end

subgraph group_persistence["Persistence"]
  node_rotarydb[("Rotary SQLite<br/>[sql_database.kt]")]
  node_bowlingstore[("Bowling SQLite<br/>[BowlingDb.kt]")]
end

node_user(("App user"))

node_user -->|"opens"| node_activity
node_activity -->|"creates"| node_rotaryview
node_activity -->|"renders"| node_appnav
node_activity -->|"renders"| node_bottomnav
node_bottomnav -->|"navigates"| node_appnav
node_appnav -->|"routes"| node_search
node_appnav -->|"routes"| node_add
node_appnav -->|"routes"| node_details
node_appnav -->|"routes"| node_recordlist
node_appnav -->|"routes"| node_bowlscreens
node_add -->|"adds record"| node_rotaryview
node_rotaryview -->|"reads and writes"| node_rotarydb
node_bowlscreens -->|"queries and saves"| node_bowldb
node_bowldb -->|"reads and writes"| node_bowlingstore

click node_activity "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/MainActivity.kt"
click node_appnav "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/navigation/AppNav.kt"
click node_bottomnav "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/navigation/BottomNav.kt"
click node_search "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/screens/search.kt"
click node_add "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/screens/add.kt"
click node_details "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/screens/Detail.kt"
click node_recordlist "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/screens/db.kt"
click node_rotaryview "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/models/RotaryView.kt"
click node_bowlscreens "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/bowling/BowlingScreens.kt"
click node_bowldb "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/bowling/BowlingDb.kt"
click node_rotarydb "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/database/sql_database.kt"
click node_bowlingstore "https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/bowling/BowlingDb.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_appnav,node_bottomnav,node_user toneBlue
class node_search,node_add,node_details,node_recordlist,node_rotaryview toneAmber
class node_bowlscreens,node_bowldb toneMint
class node_rotarydb,node_bowlingstore toneRose
```

## Components

### App shell

- [Main activity](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/MainActivity.kt): `app/src/main/java/com/tb/rotarydiecutter/MainActivity.kt`
- [App navigation](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/navigation/AppNav.kt): `app/src/main/java/com/tb/rotarydiecutter/ui/navigation/AppNav.kt`
- [Bottom navigation](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/navigation/BottomNav.kt): `app/src/main/java/com/tb/rotarydiecutter/ui/navigation/BottomNav.kt`

### Die records

- [Search records](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/screens/search.kt): `app/src/main/java/com/tb/rotarydiecutter/ui/screens/search.kt`
- [Add record](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/screens/add.kt): `app/src/main/java/com/tb/rotarydiecutter/ui/screens/add.kt`
- [Record details](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/screens/Detail.kt): `app/src/main/java/com/tb/rotarydiecutter/ui/screens/Detail.kt`
- [Dies list](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/screens/db.kt): `app/src/main/java/com/tb/rotarydiecutter/ui/screens/db.kt`
- [Record state and operations](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/models/RotaryView.kt): `app/src/main/java/com/tb/rotarydiecutter/models/RotaryView.kt`

### Bowling scores

- [Bowling screens](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/bowling/BowlingScreens.kt): `app/src/main/java/com/tb/rotarydiecutter/ui/bowling/BowlingScreens.kt`
- [Bowling data access](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/bowling/BowlingDb.kt): `app/src/main/java/com/tb/rotarydiecutter/ui/bowling/BowlingDb.kt`

### Persistence

- [Rotary SQLite](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/database/sql_database.kt): `app/src/main/java/com/tb/rotarydiecutter/database/sql_database.kt`
- [Bowling SQLite](https://github.com/inferi70/westrock-app/blob/main/app/src/main/java/com/tb/rotarydiecutter/ui/bowling/BowlingDb.kt): `app/src/main/java/com/tb/rotarydiecutter/ui/bowling/BowlingDb.kt`

### Other components

- **App user**

## Connections

- App user → Main activity: opens
- Main activity → Record state and operations: creates
- Main activity → App navigation: renders
- Main activity → Bottom navigation: renders
- Bottom navigation → App navigation: navigates
- App navigation → Search records: routes
- App navigation → Add record: routes
- App navigation → Record details: routes
- App navigation → Dies list: routes
- App navigation → Bowling screens: routes
- Add record → Record state and operations: adds record
- Record state and operations → Rotary SQLite: reads and writes
- Bowling screens → Bowling data access: queries and saves
- Bowling data access → Bowling SQLite: reads and writes
