# gauruuu/gdrm architecture

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

- Interactive diagram: https://gitdiagram.com/gauruuu/gdrm
- Repository: https://github.com/gauruuu/gdrm

## Overview

GDRM is a Flutter-based document-rights management application, with a companion SDK. Its documented workflow packages sensitive PDFs into .gdrm containers, applies recipient and device restrictions, then authenticates users and presents protected content in a controlled reader. Additional documented safeguards include dynamic watermarking, ChronoLock expiry, piracy detection, and print controls. The tree identifies the relevant screens and services, but their implementations were not sampled; the graph therefore maps those capabilities without asserting detailed internal call sequences.

Main entry points: [`lib/screens/reader_console.dart`](https://github.com/gauruuu/gdrm/blob/main/lib/screens/reader_console.dart) (Reader console), [`lib/screens/home_screen.dart`](https://github.com/gauruuu/gdrm/blob/main/lib/screens/home_screen.dart) (Home), [`lib/main.dart`](https://github.com/gauruuu/gdrm/blob/main/lib/main.dart) (Flutter app), [`lib/screens/packer_console.dart`](https://github.com/gauruuu/gdrm/blob/main/lib/screens/packer_console.dart) (Packer console)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Document workflow"]
  node_app["Flutter app<br/>[main.dart]"]
  node_home["Home<br/>[home_screen.dart]"]
  node_packer["Packer console"]
  node_container["GDRM model<br/>[gdrm_model.dart]"]
  node_reader["Reader console"]
  node_state["App state<br/>[app_state.dart]"]
end

subgraph group_protection["Usage safeguards"]
  node_device["Device binding"]
  node_security["Security service"]
  node_chrono["ChronoLock"]
  node_watermark["Dynamic watermark"]
  node_piracy["Piracy detection"]
  node_alerts["Piracy alerts"]
  node_printing["Print controls"]
  node_snail["Snail trail"]
end

subgraph group_identity["Identity and cloud"]
  node_auth["Cloud authentication"]
  node_globalauth["Global authentication"]
  node_firestore[("Firebase services")]
end

subgraph group_sdk["SDK integration"]
  node_sdkengine["SDK engine<br/>[gdrm_engine.dart]"]
  node_secureviewer["Secure viewer"]
  node_sdkdevice["SDK device service"]
end

node_user(("User"))

node_user -->|"uses"| node_app
node_app -->|"starts UI"| node_home
node_home -->|"opens packing"| node_packer
node_home -->|"opens reading"| node_reader
node_packer -->|"packages document"| node_container
node_reader -->|"reads container"| node_container
node_auth -.->|"checks recipient"| node_firestore
node_globalauth -.->|"authenticates"| node_firestore
node_reader -.->|"requires identity"| node_auth
node_reader -.->|"binds device"| node_device
node_reader -.->|"enforces access"| node_security
node_reader -.->|"enforces expiry"| node_chrono
node_reader -.->|"shows watermark"| node_watermark
node_reader -.->|"checks misuse"| node_piracy
node_piracy -.->|"surfaces alerts"| node_alerts
node_reader -.->|"controls printing"| node_printing
node_reader -.->|"shows trail"| node_snail
node_sdkengine -.->|"uses device service"| node_sdkdevice
node_secureviewer -.->|"uses engine"| node_sdkengine

click node_app "https://github.com/gauruuu/gdrm/blob/main/lib/main.dart"
click node_home "https://github.com/gauruuu/gdrm/blob/main/lib/screens/home_screen.dart"
click node_packer "https://github.com/gauruuu/gdrm/blob/main/lib/screens/packer_console.dart"
click node_container "https://github.com/gauruuu/gdrm/blob/main/lib/models/gdrm_model.dart"
click node_reader "https://github.com/gauruuu/gdrm/blob/main/lib/screens/reader_console.dart"
click node_state "https://github.com/gauruuu/gdrm/blob/main/lib/state/app_state.dart"
click node_auth "https://github.com/gauruuu/gdrm/blob/main/lib/screens/cloud_auth_screen.dart"
click node_globalauth "https://github.com/gauruuu/gdrm/blob/main/lib/screens/global_auth_screen.dart"
click node_device "https://github.com/gauruuu/gdrm/blob/main/lib/services/device_key_service.dart"
click node_security "https://github.com/gauruuu/gdrm/blob/main/lib/services/security_service.dart"
click node_chrono "https://github.com/gauruuu/gdrm/blob/main/lib/screens/chrono_lock_screen.dart"
click node_watermark "https://github.com/gauruuu/gdrm/blob/main/lib/widgets/dynamic_watermark.dart"
click node_piracy "https://github.com/gauruuu/gdrm/blob/main/lib/services/piracy_service.dart"
click node_alerts "https://github.com/gauruuu/gdrm/blob/main/lib/screens/piracy_alerts_screen.dart"
click node_printing "https://github.com/gauruuu/gdrm/blob/main/lib/services/printing_service.dart"
click node_snail "https://github.com/gauruuu/gdrm/blob/main/lib/screens/snail_trail_screen.dart"
click node_sdkengine "https://github.com/gauruuu/gdrm/blob/main/packages/gdrm_sdk/lib/src/core/gdrm_engine.dart"
click node_secureviewer "https://github.com/gauruuu/gdrm/blob/main/packages/gdrm_sdk/lib/src/widgets/gdrm_secure_viewer.dart"
click node_sdkdevice "https://github.com/gauruuu/gdrm/blob/main/packages/gdrm_sdk/lib/src/services/gdrm_device_service.dart"

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_home,node_packer,node_container,node_reader,node_state,node_user toneBlue
class node_device,node_security,node_chrono,node_watermark,node_piracy,node_alerts,node_printing,node_snail toneAmber
class node_auth,node_globalauth,node_firestore toneMint
class node_sdkengine,node_secureviewer,node_sdkdevice toneRose
```

## Components

### Document workflow

- [Flutter app](https://github.com/gauruuu/gdrm/blob/main/lib/main.dart): `lib/main.dart`
- [Home](https://github.com/gauruuu/gdrm/blob/main/lib/screens/home_screen.dart): `lib/screens/home_screen.dart`
- [Packer console](https://github.com/gauruuu/gdrm/blob/main/lib/screens/packer_console.dart): `lib/screens/packer_console.dart`
- [GDRM model](https://github.com/gauruuu/gdrm/blob/main/lib/models/gdrm_model.dart): `lib/models/gdrm_model.dart`
- [Reader console](https://github.com/gauruuu/gdrm/blob/main/lib/screens/reader_console.dart): `lib/screens/reader_console.dart`
- [App state](https://github.com/gauruuu/gdrm/blob/main/lib/state/app_state.dart): `lib/state/app_state.dart`

### Usage safeguards

- [Device binding](https://github.com/gauruuu/gdrm/blob/main/lib/services/device_key_service.dart): `lib/services/device_key_service.dart`
- [Security service](https://github.com/gauruuu/gdrm/blob/main/lib/services/security_service.dart): `lib/services/security_service.dart`
- [ChronoLock](https://github.com/gauruuu/gdrm/blob/main/lib/screens/chrono_lock_screen.dart): `lib/screens/chrono_lock_screen.dart`
- [Dynamic watermark](https://github.com/gauruuu/gdrm/blob/main/lib/widgets/dynamic_watermark.dart): `lib/widgets/dynamic_watermark.dart`
- [Piracy detection](https://github.com/gauruuu/gdrm/blob/main/lib/services/piracy_service.dart): `lib/services/piracy_service.dart`
- [Piracy alerts](https://github.com/gauruuu/gdrm/blob/main/lib/screens/piracy_alerts_screen.dart): `lib/screens/piracy_alerts_screen.dart`
- [Print controls](https://github.com/gauruuu/gdrm/blob/main/lib/services/printing_service.dart): `lib/services/printing_service.dart`
- [Snail trail](https://github.com/gauruuu/gdrm/blob/main/lib/screens/snail_trail_screen.dart): `lib/screens/snail_trail_screen.dart`

### Identity and cloud

- [Cloud authentication](https://github.com/gauruuu/gdrm/blob/main/lib/screens/cloud_auth_screen.dart): `lib/screens/cloud_auth_screen.dart`
- [Global authentication](https://github.com/gauruuu/gdrm/blob/main/lib/screens/global_auth_screen.dart): `lib/screens/global_auth_screen.dart`
- **Firebase services**

### SDK integration

- [SDK engine](https://github.com/gauruuu/gdrm/blob/main/packages/gdrm_sdk/lib/src/core/gdrm_engine.dart): `packages/gdrm_sdk/lib/src/core/gdrm_engine.dart`
- [Secure viewer](https://github.com/gauruuu/gdrm/blob/main/packages/gdrm_sdk/lib/src/widgets/gdrm_secure_viewer.dart): `packages/gdrm_sdk/lib/src/widgets/gdrm_secure_viewer.dart`
- [SDK device service](https://github.com/gauruuu/gdrm/blob/main/packages/gdrm_sdk/lib/src/services/gdrm_device_service.dart): `packages/gdrm_sdk/lib/src/services/gdrm_device_service.dart`

### Other components

- **User**

## Connections

- User → Flutter app: uses
- Flutter app → Home: starts UI
- Home → Packer console: opens packing
- Home → Reader console: opens reading
- Packer console → GDRM model: packages document
- Reader console → GDRM model: reads container
- Cloud authentication → Firebase services: checks recipient
- Global authentication → Firebase services: authenticates
- Reader console → Cloud authentication: requires identity
- Reader console → Device binding: binds device
- Reader console → Security service: enforces access
- Reader console → ChronoLock: enforces expiry
- Reader console → Dynamic watermark: shows watermark
- Reader console → Piracy detection: checks misuse
- Piracy detection → Piracy alerts: surfaces alerts
- Reader console → Print controls: controls printing
- Reader console → Snail trail: shows trail
- SDK engine → SDK device service: uses device service
- Secure viewer → SDK engine: uses engine
