# nagatarafi/polinema-mobile-lab architecture

> Architecture diagram of the GitHub repository nagatarafi/polinema-mobile-lab, 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/nagatarafi/polinema-mobile-lab
- Repository: https://github.com/nagatarafi/polinema-mobile-lab

## Overview

Polinema Mobile Lab is an Android teaching app that presents ten practical exercises as cards; selecting a card opens that exercise. The exercise areas cover Android basics, input and navigation, fragments, device features, and Firebase CRUD. The README documents the capabilities and menu flow, but the sampled source does not show implementation-level calls, so internal exercise wiring is omitted. Maps, GPS, camera, and Firebase are shown as external dependencies of their documented areas.

Main entry points: [`app/src/main/java/com/example/polinemamobilelab/MainActivity.kt`](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/MainActivity.kt) (Jobsheet menu), [`app/src/main/java/com/example/polinemamobilelab/jobsheet08_maps/MapsMainActivity.kt`](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet08_maps/MapsMainActivity.kt) (Maps and location), [`app/src/main/java/com/example/polinemamobilelab/jobsheet09_kamera/CameraActivity.kt`](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet09_kamera/CameraActivity.kt) (Camera preview), [`app/src/main/java/com/example/polinemamobilelab/jobsheet10_firebase/FirebaseMainActivity.kt`](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet10_firebase/FirebaseMainActivity.kt) (Firebase CRUD)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_shell["App shell"]
  node_main["Jobsheet menu<br/>[MainActivity.kt]"]
  node_menuadapter["Menu adapter"]
  node_base["Shared toolbar"]
end

subgraph group_basics["Android basics"]
  node_js01["Install and hello"]
  node_js02["Activity lifecycle"]
  node_js03["Project structure"]
  node_js04["Input and output<br/>[SimpleActivity.kt]"]
end

subgraph group_navigation["UI and navigation"]
  node_js05["Intent exercises"]
  node_js06["Lists and dialogs"]
  node_js07["Fragment exercises"]
end

subgraph group_device["Device features"]
  node_js08["Maps and location"]
  node_js09["Camera preview<br/>[CameraActivity.kt]"]
end

subgraph group_data["Cloud data"]
  node_js10["Firebase CRUD"]
end

node_user(("App user"))
node_maps(("Maps and GPS services"))
node_camera(("Device camera"))
node_firebase[("Firebase Realtime DB")]

node_user -->|"opens app"| node_main
node_main -->|"displays cards"| node_menuadapter
node_main -->|"opens exercise"| node_js01
node_main -->|"opens exercise"| node_js02
node_main -->|"opens exercise"| node_js03
node_main -->|"opens exercise"| node_js04
node_main -->|"opens exercise"| node_js05
node_main -->|"opens exercise"| node_js06
node_main -->|"opens exercise"| node_js07
node_main -->|"opens exercise"| node_js08
node_main -->|"opens exercise"| node_js09
node_main -->|"opens exercise"| node_js10
node_js08 -.->|"uses maps and GPS"| node_maps
node_js09 -.->|"accesses camera"| node_camera
node_js10 -.->|"CRUD operations"| node_firebase

click node_main "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/MainActivity.kt"
click node_menuadapter "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/JobsheetMenuAdapter.kt"
click node_base "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/common/BaseToolbarActivity.kt"
click node_js01 "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet01_instalasi/HelloWorldActivity.kt"
click node_js02 "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet02_lifecycle/LifecycleActivity.kt"
click node_js03 "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet03_struktur/StrukturProjectActivity.kt"
click node_js04 "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet04_activity/SimpleActivity.kt"
click node_js05 "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet05_intent/IntentMainActivity.kt"
click node_js06 "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet06_intent2/Intent2MainActivity.kt"
click node_js07 "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet07_fragment/FragmentMainActivity.kt"
click node_js08 "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet08_maps/MapsMainActivity.kt"
click node_js09 "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet09_kamera/CameraActivity.kt"
click node_js10 "https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet10_firebase/FirebaseMainActivity.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_main,node_menuadapter,node_base,node_user toneBlue
class node_js01,node_js02,node_js03,node_js04,node_firebase toneAmber
class node_js05,node_js06,node_js07 toneMint
class node_js08,node_js09 toneRose
class node_js10,node_maps,node_camera toneIndigo
```

## Components

### App shell

- [Jobsheet menu](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/MainActivity.kt): `app/src/main/java/com/example/polinemamobilelab/MainActivity.kt`
- [Menu adapter](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/JobsheetMenuAdapter.kt): `app/src/main/java/com/example/polinemamobilelab/JobsheetMenuAdapter.kt`
- [Shared toolbar](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/common/BaseToolbarActivity.kt): `app/src/main/java/com/example/polinemamobilelab/common/BaseToolbarActivity.kt`

### Android basics

- [Install and hello](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet01_instalasi/HelloWorldActivity.kt): `app/src/main/java/com/example/polinemamobilelab/jobsheet01_instalasi/HelloWorldActivity.kt`
- [Activity lifecycle](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet02_lifecycle/LifecycleActivity.kt): `app/src/main/java/com/example/polinemamobilelab/jobsheet02_lifecycle/LifecycleActivity.kt`
- [Project structure](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet03_struktur/StrukturProjectActivity.kt): `app/src/main/java/com/example/polinemamobilelab/jobsheet03_struktur/StrukturProjectActivity.kt`
- [Input and output](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet04_activity/SimpleActivity.kt): `app/src/main/java/com/example/polinemamobilelab/jobsheet04_activity/SimpleActivity.kt`

### UI and navigation

- [Intent exercises](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet05_intent/IntentMainActivity.kt): `app/src/main/java/com/example/polinemamobilelab/jobsheet05_intent/IntentMainActivity.kt`
- [Lists and dialogs](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet06_intent2/Intent2MainActivity.kt): `app/src/main/java/com/example/polinemamobilelab/jobsheet06_intent2/Intent2MainActivity.kt`
- [Fragment exercises](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet07_fragment/FragmentMainActivity.kt): `app/src/main/java/com/example/polinemamobilelab/jobsheet07_fragment/FragmentMainActivity.kt`

### Device features

- [Maps and location](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet08_maps/MapsMainActivity.kt): `app/src/main/java/com/example/polinemamobilelab/jobsheet08_maps/MapsMainActivity.kt`
- [Camera preview](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet09_kamera/CameraActivity.kt): `app/src/main/java/com/example/polinemamobilelab/jobsheet09_kamera/CameraActivity.kt`

### Cloud data

- [Firebase CRUD](https://github.com/nagatarafi/polinema-mobile-lab/blob/main/app/src/main/java/com/example/polinemamobilelab/jobsheet10_firebase/FirebaseMainActivity.kt): `app/src/main/java/com/example/polinemamobilelab/jobsheet10_firebase/FirebaseMainActivity.kt`

### Other components

- **App user**
- **Maps and GPS services**
- **Device camera**
- **Firebase Realtime DB**

## Connections

- App user → Jobsheet menu: opens app
- Jobsheet menu → Menu adapter: displays cards
- Jobsheet menu → Install and hello: opens exercise
- Jobsheet menu → Activity lifecycle: opens exercise
- Jobsheet menu → Project structure: opens exercise
- Jobsheet menu → Input and output: opens exercise
- Jobsheet menu → Intent exercises: opens exercise
- Jobsheet menu → Lists and dialogs: opens exercise
- Jobsheet menu → Fragment exercises: opens exercise
- Jobsheet menu → Maps and location: opens exercise
- Jobsheet menu → Camera preview: opens exercise
- Jobsheet menu → Firebase CRUD: opens exercise
- Maps and location → Maps and GPS services: uses maps and GPS
- Camera preview → Device camera: accesses camera
- Firebase CRUD → Firebase Realtime DB: CRUD operations
