# viscouspot/gitsync architecture

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

## Overview

GitSync is a Flutter mobile Git client with a Rust Git core. The principal workflow is to configure a repository and credentials, clone or select a local repository, then sync changes between its directory and a remote; users can also resolve conflicts and manage Git state in-app. README capabilities include background and manual sync triggers, repository browsing and editing, provider issue/PR features, and AI assistance. Rust handles Git operations through the Dart bridge. The graph follows documented capabilities and available paths; implementation wiring for unsampled Dart subsystems is not inferred.

Main entry points: [`lib/main.dart`](https://github.com/viscouspot/gitsync/blob/main/lib/main.dart) (Flutter app), [`lib/api/manager/git_manager.dart`](https://github.com/viscouspot/gitsync/blob/main/lib/api/manager/git_manager.dart) (Git API facade), [`rust/src/api/git_manager.rs`](https://github.com/viscouspot/gitsync/blob/main/rust/src/api/git_manager.rs) (Git operations), [`lib/gitsync_service.dart`](https://github.com/viscouspot/gitsync/blob/main/lib/gitsync_service.dart) (Background and manual sync)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App experience"]
  node_app["Flutter app<br/>[main.dart]"]
  node_onboarding["Setup and auth"]
  node_browse["Browse and edit<br/>[file_explorer.dart]"]
  node_git_controls["Git management<br/>[actions_page.dart]"]
  node_settings["Repository settings<br/>[settings_main.dart]"]
end

subgraph group_repo["Repository workflow"]
  node_clone["Clone repository"]
  node_repos["Repository management<br/>[repo_manager.dart]"]
  node_auth["Provider auth"]
end

subgraph group_runtime["Sync runtime"]
  node_git_api["Git API facade<br/>[git_manager.dart]"]
  node_bridge["Rust bridge<br/>[git_manager.dart]"]
  node_git_core["Git operations<br/>[git_manager.rs]"]
  node_local_repo[("Local repositories")]
  node_sync_triggers["Background and manual sync"]
  node_native_triggers["Platform triggers"]
  node_storage[("App storage<br/>[storage.dart]")]
end

subgraph group_extras["Extended features"]
  node_provider_features["Issues and pull requests<br/>[issues_page.dart]"]
  node_ai["AI assistance"]
end

node_user(("Mobile user"))
node_remote[("Git remote")]

node_user -->|"uses"| node_app
node_app -->|"configures"| node_onboarding
node_onboarding -->|"authenticates"| node_auth
node_app -->|"starts clone"| node_clone
node_clone -->|"requests clone"| node_git_api
node_app -->|"manages repositories"| node_repos
node_repos -->|"persists settings"| node_storage
node_app -->|"configures sync"| node_sync_triggers
node_native_triggers -->|"activates"| node_sync_triggers
node_sync_triggers -->|"requests sync"| node_git_api
node_app -->|"requests Git actions"| node_git_api
node_git_api -->|"calls"| node_bridge
node_bridge -->|"dispatches"| node_git_core
node_git_core -->|"reads and writes"| node_local_repo
node_git_core -->|"fetches and pushes"| node_remote
node_auth -->|"provides credentials"| node_remote
node_app -->|"browses files"| node_browse
node_app -->|"manages Git state"| node_git_controls
node_app -->|"sets preferences"| node_settings
node_app -->|"uses provider features"| node_provider_features
node_app -->|"requests assistance"| node_ai

click node_app "https://github.com/viscouspot/gitsync/blob/main/lib/main.dart"
click node_onboarding "https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/onboarding_setup.dart"
click node_clone "https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/clone_repo_main.dart"
click node_repos "https://github.com/viscouspot/gitsync/blob/main/lib/api/manager/repo_manager.dart"
click node_auth "https://github.com/viscouspot/gitsync/blob/main/lib/api/manager/auth/git_provider_manager.dart"
click node_git_api "https://github.com/viscouspot/gitsync/blob/main/lib/api/manager/git_manager.dart"
click node_bridge "https://github.com/viscouspot/gitsync/blob/main/lib/src/rust/api/git_manager.dart"
click node_git_core "https://github.com/viscouspot/gitsync/blob/main/rust/src/api/git_manager.rs"
click node_sync_triggers "https://github.com/viscouspot/gitsync/blob/main/lib/gitsync_service.dart"
click node_native_triggers "https://github.com/viscouspot/gitsync/blob/main/android/app/src/main/kotlin/com/viscouspot/gitsync/GitTileSyncService.kt"
click node_browse "https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/file_explorer.dart"
click node_git_controls "https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/actions_page.dart"
click node_settings "https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/settings_main.dart"
click node_provider_features "https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/issues_page.dart"
click node_ai "https://github.com/viscouspot/gitsync/blob/main/lib/api/ai_chat_service.dart"
click node_storage "https://github.com/viscouspot/gitsync/blob/main/lib/api/manager/storage.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_onboarding,node_browse,node_git_controls,node_settings,node_user toneBlue
class node_clone,node_repos,node_auth,node_remote toneAmber
class node_git_api,node_bridge,node_git_core,node_local_repo,node_sync_triggers,node_native_triggers,node_storage toneMint
class node_provider_features,node_ai toneRose
```

## Components

### App experience

- [Flutter app](https://github.com/viscouspot/gitsync/blob/main/lib/main.dart): `lib/main.dart`
- [Setup and auth](https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/onboarding_setup.dart): `lib/ui/page/onboarding_setup.dart`
- [Browse and edit](https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/file_explorer.dart): `lib/ui/page/file_explorer.dart`
- [Git management](https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/actions_page.dart): `lib/ui/page/actions_page.dart`
- [Repository settings](https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/settings_main.dart): `lib/ui/page/settings_main.dart`

### Repository workflow

- [Clone repository](https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/clone_repo_main.dart): `lib/ui/page/clone_repo_main.dart`
- [Repository management](https://github.com/viscouspot/gitsync/blob/main/lib/api/manager/repo_manager.dart): `lib/api/manager/repo_manager.dart`
- [Provider auth](https://github.com/viscouspot/gitsync/blob/main/lib/api/manager/auth/git_provider_manager.dart): `lib/api/manager/auth/git_provider_manager.dart`

### Sync runtime

- [Git API facade](https://github.com/viscouspot/gitsync/blob/main/lib/api/manager/git_manager.dart): `lib/api/manager/git_manager.dart`
- [Rust bridge](https://github.com/viscouspot/gitsync/blob/main/lib/src/rust/api/git_manager.dart): `lib/src/rust/api/git_manager.dart`
- [Git operations](https://github.com/viscouspot/gitsync/blob/main/rust/src/api/git_manager.rs): `rust/src/api/git_manager.rs`
- **Local repositories**
- [Background and manual sync](https://github.com/viscouspot/gitsync/blob/main/lib/gitsync_service.dart): `lib/gitsync_service.dart`
- [Platform triggers](https://github.com/viscouspot/gitsync/blob/main/android/app/src/main/kotlin/com/viscouspot/gitsync/GitTileSyncService.kt): `android/app/src/main/kotlin/com/viscouspot/gitsync/GitTileSyncService.kt`
- [App storage](https://github.com/viscouspot/gitsync/blob/main/lib/api/manager/storage.dart): `lib/api/manager/storage.dart`

### Extended features

- [Issues and pull requests](https://github.com/viscouspot/gitsync/blob/main/lib/ui/page/issues_page.dart): `lib/ui/page/issues_page.dart`
- [AI assistance](https://github.com/viscouspot/gitsync/blob/main/lib/api/ai_chat_service.dart): `lib/api/ai_chat_service.dart`

### Other components

- **Mobile user**
- **Git remote**

## Connections

- Mobile user → Flutter app: uses
- Flutter app → Setup and auth: configures
- Setup and auth → Provider auth: authenticates
- Flutter app → Clone repository: starts clone
- Clone repository → Git API facade: requests clone
- Flutter app → Repository management: manages repositories
- Repository management → App storage: persists settings
- Flutter app → Background and manual sync: configures sync
- Platform triggers → Background and manual sync: activates
- Background and manual sync → Git API facade: requests sync
- Flutter app → Git API facade: requests Git actions
- Git API facade → Rust bridge: calls
- Rust bridge → Git operations: dispatches
- Git operations → Local repositories: reads and writes
- Git operations → Git remote: fetches and pushes
- Provider auth → Git remote: provides credentials
- Flutter app → Browse and edit: browses files
- Flutter app → Git management: manages Git state
- Flutter app → Repository settings: sets preferences
- Flutter app → Issues and pull requests: uses provider features
- Flutter app → AI assistance: requests assistance
