# delphiworlds/kastrifree architecture

> Architecture diagram of the GitHub repository delphiworlds/kastrifree, 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/delphiworlds/kastrifree
- Repository: https://github.com/delphiworlds/kastrifree

## Overview

Kastri Free is a Delphi cross-platform library that adds platform API access and backfills beyond Delphi’s RTL/FMX. The visible runtime workflow is a Delphi application using Android bridge code to reach platform services or web/messaging APIs and receive results through callbacks or broadcasts. The tree and excerpts expose only a subset of the library; the Firebase iOS files are vendored SDK headers, not application flow. Several Java helper filenames suggest additional capabilities, but their wiring is not shown, so uncertain links are omitted.

Main entry points: [`Java/DWFirebaseMessagingService.java`](https://github.com/delphiworlds/kastrifree/blob/master/Java/DWFirebaseMessagingService.java) (Firebase message handler), [`Java/DWWebChromeClient.java`](https://github.com/delphiworlds/kastrifree/blob/master/Java/DWWebChromeClient.java) (Web Chrome client), [`Demos/AndroidLocation/Service/LocationService.template.java`](https://github.com/delphiworlds/kastrifree/blob/master/Demos/AndroidLocation/Service/LocationService.template.java) (Android service bridge), [`Demos/CrossPlatformLocation/Service/CrossPlatformLocationService.template.java`](https://github.com/delphiworlds/kastrifree/blob/master/Demos/CrossPlatformLocation/Service/CrossPlatformLocationService.template.java) (Cross-platform location)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_service_bridge["Service bridges"]
  node_android_service["Android service bridge"]
  node_cross_service["Cross-platform location"]
  node_foreground_service["Foreground service"]
  node_scheduled_service["Scheduled service"]
  node_proxy_runtime["Delphi service runtime"]
  node_native_proxy["Native proxy interface"]
end

subgraph group_messaging["Push messaging"]
  node_firebase_service["Firebase message handler"]
  node_firebase_sdk["Firebase Messaging<br/>[FIRMessaging.h]"]
  node_local_broadcast["Local broadcasts"]
  node_notification_publisher["Notification publisher"]
end

subgraph group_web["Web integration"]
  node_webview["Android WebView"]
  node_chrome_client["Web Chrome client"]
  node_chrome_delegate["Chrome client delegate"]
end

subgraph group_platform_helpers["Platform helpers"]
  node_timer["Timer tasks<br/>[DWTimerTask.java]"]
  node_timer_delegate["Timer delegate"]
  node_wake_up["Wake-up helper<br/>[DWWakeUp.java]"]
end

node_delphi_app(("Delphi app"))

node_delphi_app -->|"starts service"| node_android_service
node_delphi_app -->|"requests location"| node_cross_service
node_delphi_app -->|"starts service"| node_foreground_service
node_delphi_app -->|"schedules work"| node_scheduled_service
node_android_service -->|"delegates lifecycle"| node_proxy_runtime
node_cross_service -->|"delegates lifecycle"| node_proxy_runtime
node_foreground_service -->|"delegates lifecycle"| node_proxy_runtime
node_scheduled_service -->|"delegates lifecycle"| node_proxy_runtime
node_native_proxy -->|"dispatches native calls"| node_proxy_runtime
node_firebase_sdk -.->|"delivers messages"| node_firebase_service
node_firebase_service -->|"broadcasts payload"| node_local_broadcast
node_firebase_service -->|"publishes notification"| node_notification_publisher
node_delphi_app -->|"uses WebView"| node_chrome_client
node_webview -->|"requests file chooser"| node_chrome_client
node_chrome_client -->|"submits chooser intent"| node_chrome_delegate
node_timer -->|"notifies delegate"| node_timer_delegate

click node_android_service "https://github.com/delphiworlds/kastrifree/blob/master/Demos/AndroidLocation/Service/LocationService.template.java"
click node_cross_service "https://github.com/delphiworlds/kastrifree/blob/master/Demos/CrossPlatformLocation/Service/CrossPlatformLocationService.template.java"
click node_foreground_service "https://github.com/delphiworlds/kastrifree/blob/master/Demos/ForegroundService/Service/ForegroundService.template.java"
click node_scheduled_service "https://github.com/delphiworlds/kastrifree/blob/master/Demos/ScheduledService/Service/ScheduledService.template.java"
click node_native_proxy "https://github.com/delphiworlds/kastrifree/blob/master/Demos/CrossPlatformLocation/Service/CrossPlatformLocationServiceProxyInterface.template.java"
click node_firebase_service "https://github.com/delphiworlds/kastrifree/blob/master/Java/DWFirebaseMessagingService.java"
click node_firebase_sdk "https://github.com/delphiworlds/kastrifree/blob/master/ThirdParty/Firebase/iOS/Firebase.6.3.0/Messaging/FirebaseMessaging.framework/Headers/FIRMessaging.h"
click node_local_broadcast "https://github.com/delphiworlds/kastrifree/blob/master/Java/DWMultiBroadcastReceiver.java"
click node_notification_publisher "https://github.com/delphiworlds/kastrifree/blob/master/Java/DWNotificationPublisher.java"
click node_chrome_client "https://github.com/delphiworlds/kastrifree/blob/master/Java/DWWebChromeClient.java"
click node_chrome_delegate "https://github.com/delphiworlds/kastrifree/blob/master/Java/DWWebChromeClientDelegate.java"
click node_timer "https://github.com/delphiworlds/kastrifree/blob/master/Java/DWTimerTask.java"
click node_timer_delegate "https://github.com/delphiworlds/kastrifree/blob/master/Java/DWTimerTaskDelegate.java"
click node_wake_up "https://github.com/delphiworlds/kastrifree/blob/master/Java/DWWakeUp.java"

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_android_service,node_cross_service,node_foreground_service,node_scheduled_service,node_proxy_runtime,node_native_proxy toneBlue
class node_firebase_service,node_firebase_sdk,node_local_broadcast,node_notification_publisher toneAmber
class node_webview,node_chrome_client,node_chrome_delegate toneMint
class node_timer,node_timer_delegate,node_wake_up toneRose
class node_delphi_app toneIndigo
```

## Components

### Service bridges

- [Android service bridge](https://github.com/delphiworlds/kastrifree/blob/master/Demos/AndroidLocation/Service/LocationService.template.java): `Demos/AndroidLocation/Service/LocationService.template.java`
- [Cross-platform location](https://github.com/delphiworlds/kastrifree/blob/master/Demos/CrossPlatformLocation/Service/CrossPlatformLocationService.template.java): `Demos/CrossPlatformLocation/Service/CrossPlatformLocationService.template.java`
- [Foreground service](https://github.com/delphiworlds/kastrifree/blob/master/Demos/ForegroundService/Service/ForegroundService.template.java): `Demos/ForegroundService/Service/ForegroundService.template.java`
- [Scheduled service](https://github.com/delphiworlds/kastrifree/blob/master/Demos/ScheduledService/Service/ScheduledService.template.java): `Demos/ScheduledService/Service/ScheduledService.template.java`
- **Delphi service runtime**
- [Native proxy interface](https://github.com/delphiworlds/kastrifree/blob/master/Demos/CrossPlatformLocation/Service/CrossPlatformLocationServiceProxyInterface.template.java): `Demos/CrossPlatformLocation/Service/CrossPlatformLocationServiceProxyInterface.template.java`

### Push messaging

- [Firebase message handler](https://github.com/delphiworlds/kastrifree/blob/master/Java/DWFirebaseMessagingService.java): `Java/DWFirebaseMessagingService.java`
- [Firebase Messaging](https://github.com/delphiworlds/kastrifree/blob/master/ThirdParty/Firebase/iOS/Firebase.6.3.0/Messaging/FirebaseMessaging.framework/Headers/FIRMessaging.h): `ThirdParty/Firebase/iOS/Firebase.6.3.0/Messaging/FirebaseMessaging.framework/Headers/FIRMessaging.h`
- [Local broadcasts](https://github.com/delphiworlds/kastrifree/blob/master/Java/DWMultiBroadcastReceiver.java): `Java/DWMultiBroadcastReceiver.java`
- [Notification publisher](https://github.com/delphiworlds/kastrifree/blob/master/Java/DWNotificationPublisher.java): `Java/DWNotificationPublisher.java`

### Web integration

- **Android WebView**
- [Web Chrome client](https://github.com/delphiworlds/kastrifree/blob/master/Java/DWWebChromeClient.java): `Java/DWWebChromeClient.java`
- [Chrome client delegate](https://github.com/delphiworlds/kastrifree/blob/master/Java/DWWebChromeClientDelegate.java): `Java/DWWebChromeClientDelegate.java`

### Platform helpers

- [Timer tasks](https://github.com/delphiworlds/kastrifree/blob/master/Java/DWTimerTask.java): `Java/DWTimerTask.java`
- [Timer delegate](https://github.com/delphiworlds/kastrifree/blob/master/Java/DWTimerTaskDelegate.java): `Java/DWTimerTaskDelegate.java`
- [Wake-up helper](https://github.com/delphiworlds/kastrifree/blob/master/Java/DWWakeUp.java): `Java/DWWakeUp.java`

### Other components

- **Delphi app**

## Connections

- Delphi app → Android service bridge: starts service
- Delphi app → Cross-platform location: requests location
- Delphi app → Foreground service: starts service
- Delphi app → Scheduled service: schedules work
- Android service bridge → Delphi service runtime: delegates lifecycle
- Cross-platform location → Delphi service runtime: delegates lifecycle
- Foreground service → Delphi service runtime: delegates lifecycle
- Scheduled service → Delphi service runtime: delegates lifecycle
- Native proxy interface → Delphi service runtime: dispatches native calls
- Firebase Messaging → Firebase message handler: delivers messages
- Firebase message handler → Local broadcasts: broadcasts payload
- Firebase message handler → Notification publisher: publishes notification
- Delphi app → Web Chrome client: uses WebView
- Android WebView → Web Chrome client: requests file chooser
- Web Chrome client → Chrome client delegate: submits chooser intent
- Timer tasks → Timer delegate: notifies delegate
