# pokiepaws/pokiepaws-mobile architecture

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

- Interactive diagram: https://gitdiagram.com/pokiepaws/pokiepaws-mobile
- Repository: https://github.com/pokiepaws/pokiepaws-mobile

## Overview

PokiePaws Mobile is an Android app for pet owners to manage animals and care. The central flow is owner sign-in, selecting or adding an animal, then browsing clinics and vets to schedule, review, or cancel visits; visit and prescription records are locally cached for offline use. The graph preserves the documented localization and push-notification capabilities. Arrows are limited to relationships shown in excerpts, the source index, or README; several UI and synchronization links remain unverified.

Main entry points: [`app/src/main/java/com/pokiepaws/mobile/navigation/AppNavigation.kt`](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/navigation/AppNavigation.kt) (App navigation), [`app/src/main/java/com/pokiepaws/mobile/data/remote/service`](https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/data/remote/service) (REST API services), [`app/src/main/java/com/pokiepaws/mobile/data/repository/AuthRepositoryImpl.kt`](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/repository/AuthRepositoryImpl.kt) (Authentication repository), [`app/src/main/java/com/pokiepaws/mobile/data/repository/VisitRepositoryImpl.kt`](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/repository/VisitRepositoryImpl.kt) (Visit repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Owner experience"]
  node_app["Android app entry<br/>[MainActivity.kt]"]
  node_navigation["App navigation<br/>[AppNavigation.kt]"]
end

subgraph group_care["Pet care"]
  node_animals["Animal management"]
  node_visits["Visit scheduling"]
  node_history["Visit history"]
  node_clinics["Clinics and vets"]
end

subgraph group_access["Identity and profile"]
  node_authui["Sign-in and registration"]
  node_profileui["Owner settings"]
  node_authrepo["Authentication repository"]
  node_token[("Secure token storage<br/>[TokenManager.kt]")]
end

subgraph group_data["Data and sync"]
  node_animalrepo["Animal repository"]
  node_visitrepo["Visit repository"]
  node_database[("Encrypted local database<br/>[PokieDatabase.kt]")]
  node_sync["Offline synchronization"]
end

subgraph group_integrations["Platform integrations"]
  node_services["REST API services"]
  node_push["Push message service"]
  node_device["Device token registration"]
end

node_owner(("Pet owner"))
node_api{{"PokiePaws REST API"}}
node_fcm{{"Firebase Cloud Messaging"}}
node_language["Polish / English"]

node_owner -->|"uses"| node_app
node_app -->|"opens"| node_navigation
node_navigation -.->|"routes"| node_authui
node_navigation -.->|"routes"| node_animals
node_navigation -.->|"routes"| node_visits
node_navigation -.->|"routes"| node_history
node_navigation -.->|"routes"| node_clinics
node_navigation -.->|"routes"| node_profileui
node_authui -.->|"uses"| node_authrepo
node_profileui -.->|"uses"| node_authrepo
node_authrepo -->|"stores tokens"| node_token
node_authrepo -->|"calls auth API"| node_services
node_authrepo -->|"caches profile"| node_database
node_animals -.->|"uses"| node_animalrepo
node_animalrepo -->|"calls animal API"| node_services
node_animalrepo -->|"reads and writes"| node_database
node_visits -.->|"uses"| node_visitrepo
node_history -.->|"uses"| node_visitrepo
node_visitrepo -->|"calls visit API"| node_services
node_visitrepo -->|"reads and writes"| node_database
node_clinics -.->|"loads listings"| node_services
node_sync -.->|"syncs animals"| node_animalrepo
node_sync -.->|"syncs visits"| node_visitrepo
node_services -->|"REST requests"| node_api
node_fcm -.->|"delivers messages"| node_push
node_push -->|"saves notifications"| node_database
node_push -->|"opens"| node_app
node_push -->|"registers token"| node_device
node_device -.->|"registers device"| node_services
node_owner -.->|"selects"| node_language

click node_app "https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/MainActivity.kt"
click node_navigation "https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/navigation/AppNavigation.kt"
click node_animals "https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/animals"
click node_visits "https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/visits"
click node_history "https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/animals/animalvisitshistory"
click node_clinics "https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/clinics"
click node_authui "https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/auth"
click node_profileui "https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/settings"
click node_authrepo "https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/repository/AuthRepositoryImpl.kt"
click node_token "https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/local/TokenManager.kt"
click node_animalrepo "https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/repository/AnimalRepositoryImpl.kt"
click node_visitrepo "https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/repository/VisitRepositoryImpl.kt"
click node_database "https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/local/room/PokieDatabase.kt"
click node_sync "https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/data/sync"
click node_services "https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/data/remote/service"
click node_push "https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/notifications/PokiePawsMessagingService.kt"
click node_device "https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/notifications/DeviceTokenRegistrar.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_app,node_navigation toneBlue
class node_animals,node_visits,node_history,node_clinics toneAmber
class node_authui,node_profileui,node_authrepo,node_token,node_api toneMint
class node_animalrepo,node_visitrepo,node_database,node_sync toneRose
class node_services,node_push,node_device,node_owner,node_fcm,node_language toneIndigo
```

## Components

### Owner experience

- [Android app entry](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/MainActivity.kt): `app/src/main/java/com/pokiepaws/mobile/MainActivity.kt`
- [App navigation](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/navigation/AppNavigation.kt): `app/src/main/java/com/pokiepaws/mobile/navigation/AppNavigation.kt`

### Pet care

- [Animal management](https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/animals): `app/src/main/java/com/pokiepaws/mobile/ui/animals`
- [Visit scheduling](https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/visits): `app/src/main/java/com/pokiepaws/mobile/ui/visits`
- [Visit history](https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/animals/animalvisitshistory): `app/src/main/java/com/pokiepaws/mobile/ui/animals/animalvisitshistory`
- [Clinics and vets](https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/clinics): `app/src/main/java/com/pokiepaws/mobile/ui/clinics`

### Identity and profile

- [Sign-in and registration](https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/auth): `app/src/main/java/com/pokiepaws/mobile/ui/auth`
- [Owner settings](https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/ui/settings): `app/src/main/java/com/pokiepaws/mobile/ui/settings`
- [Authentication repository](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/repository/AuthRepositoryImpl.kt): `app/src/main/java/com/pokiepaws/mobile/data/repository/AuthRepositoryImpl.kt`
- [Secure token storage](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/local/TokenManager.kt): `app/src/main/java/com/pokiepaws/mobile/data/local/TokenManager.kt`

### Data and sync

- [Animal repository](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/repository/AnimalRepositoryImpl.kt): `app/src/main/java/com/pokiepaws/mobile/data/repository/AnimalRepositoryImpl.kt`
- [Visit repository](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/repository/VisitRepositoryImpl.kt): `app/src/main/java/com/pokiepaws/mobile/data/repository/VisitRepositoryImpl.kt`
- [Encrypted local database](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/data/local/room/PokieDatabase.kt): `app/src/main/java/com/pokiepaws/mobile/data/local/room/PokieDatabase.kt`
- [Offline synchronization](https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/data/sync): `app/src/main/java/com/pokiepaws/mobile/data/sync`

### Platform integrations

- [REST API services](https://github.com/pokiepaws/pokiepaws-mobile/tree/main/app/src/main/java/com/pokiepaws/mobile/data/remote/service): `app/src/main/java/com/pokiepaws/mobile/data/remote/service`
- [Push message service](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/notifications/PokiePawsMessagingService.kt): `app/src/main/java/com/pokiepaws/mobile/notifications/PokiePawsMessagingService.kt`
- [Device token registration](https://github.com/pokiepaws/pokiepaws-mobile/blob/main/app/src/main/java/com/pokiepaws/mobile/notifications/DeviceTokenRegistrar.kt): `app/src/main/java/com/pokiepaws/mobile/notifications/DeviceTokenRegistrar.kt`

### Other components

- **Pet owner**
- **PokiePaws REST API**
- **Firebase Cloud Messaging**
- **Polish / English**

## Connections

- Pet owner → Android app entry: uses (evidence: `app/src/main/java/com/pokiepaws/mobile/MainActivity.kt`)
- Android app entry → App navigation: opens (evidence: `app/src/main/java/com/pokiepaws/mobile/MainActivity.kt`)
- App navigation → Sign-in and registration: routes
- App navigation → Animal management: routes
- App navigation → Visit scheduling: routes
- App navigation → Visit history: routes
- App navigation → Clinics and vets: routes
- App navigation → Owner settings: routes
- Sign-in and registration → Authentication repository: uses
- Owner settings → Authentication repository: uses
- Authentication repository → Secure token storage: stores tokens (evidence: `app/src/main/java/com/pokiepaws/mobile/data/repository/AuthRepositoryImpl.kt`)
- Authentication repository → REST API services: calls auth API (evidence: `app/src/main/java/com/pokiepaws/mobile/data/repository/AuthRepositoryImpl.kt`)
- Authentication repository → Encrypted local database: caches profile (evidence: `app/src/main/java/com/pokiepaws/mobile/data/repository/AuthRepositoryImpl.kt`)
- Animal management → Animal repository: uses
- Animal repository → REST API services: calls animal API (evidence: `app/src/main/java/com/pokiepaws/mobile/data/repository/AnimalRepositoryImpl.kt`)
- Animal repository → Encrypted local database: reads and writes (evidence: `app/src/main/java/com/pokiepaws/mobile/data/repository/AnimalRepositoryImpl.kt`)
- Visit scheduling → Visit repository: uses
- Visit history → Visit repository: uses
- Visit repository → REST API services: calls visit API (evidence: `app/src/main/java/com/pokiepaws/mobile/data/repository/VisitRepositoryImpl.kt`)
- Visit repository → Encrypted local database: reads and writes (evidence: `app/src/main/java/com/pokiepaws/mobile/data/repository/VisitRepositoryImpl.kt`)
- Clinics and vets → REST API services: loads listings
- Offline synchronization → Animal repository: syncs animals
- Offline synchronization → Visit repository: syncs visits
- REST API services → PokiePaws REST API: REST requests (evidence: `app/src/main/java/com/pokiepaws/mobile/data/remote/service/VisitApiService.kt`)
- Firebase Cloud Messaging → Push message service: delivers messages
- Push message service → Encrypted local database: saves notifications (evidence: `app/src/main/java/com/pokiepaws/mobile/notifications/PokiePawsMessagingService.kt`)
- Push message service → Android app entry: opens (evidence: `app/src/main/java/com/pokiepaws/mobile/notifications/PokiePawsMessagingService.kt`)
- Push message service → Device token registration: registers token (evidence: `app/src/main/java/com/pokiepaws/mobile/notifications/PokiePawsMessagingService.kt`)
- Device token registration → REST API services: registers device
- Pet owner → Polish / English: selects
