# kucheu/manganotificator architecture

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

- Interactive diagram: https://gitdiagram.com/kucheu/manganotificator
- Repository: https://github.com/kucheu/manganotificator

## Overview

MangaDexNotificator is a Windows desktop manga tracker that keeps a local list, checks MangaDex for new English chapters, and raises toast notifications. Users can add a manga by link or manually refresh; a one-minute background timer also refreshes tracked titles. The graph reflects the sampled runtime code and documented-by-code responsibilities; some referenced API behavior, including TryGetCurrentChapter, is not present in the sampled source, so uncertain internal wiring is omitted.

Main entry points: [`MangaDexNotificator/Models/MangaManager.cs`](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/MangaManager.cs) (Manga manager), [`MangaDexNotificator/ViewModel/MainViewModel.cs`](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/ViewModel/MainViewModel.cs) (Main view model), [`MangaDexNotificator/App.xaml.cs`](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/App.xaml.cs) (App startup), [`MangaDexNotificator/Models/ApiConnect.cs`](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/ApiConnect.cs) (MangaDex API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_lifecycle["Application lifecycle"]
  node_app["App startup<br/>[App.xaml.cs]"]
end

subgraph group_ui["Desktop interface"]
  node_mainview["Main window<br/>[MainWindow.xaml.cs]"]
  node_mainvm["Main view model<br/>[MainViewModel.cs]"]
  node_addview["Add manga window<br/>[AddManga.xaml.cs]"]
  node_addvm["Add manga model"]
  node_command["Relay command<br/>[RelayCommand.cs]"]
end

subgraph group_tracking["Manga tracking"]
  node_manager["Manga manager<br/>[MangaManager.cs]"]
  node_manga["Tracked manga<br/>[MangaDB.cs]"]
  node_context["Manga data context"]
end

subgraph group_integrations["External services"]
  node_api["MangaDex API client<br/>[ApiConnect.cs]"]
  node_sqlite[("SQLite database")]
  node_toast["Toast notifications"]
end

node_user(("Desktop user"))
node_mangadex{{"MangaDex service"}}
node_windows{{"Windows toast service"}}

node_user -->|"uses"| node_mainview
node_app -->|"opens"| node_mainview
node_mainview -->|"creates"| node_mainvm
node_mainvm -->|"gets manga list"| node_manager
node_mainvm -->|"requests refresh"| node_manager
node_mainvm -->|"opens add window"| node_addview
node_addview -->|"creates"| node_addvm
node_addvm -->|"adds manga"| node_manager
node_mainvm -->|"creates commands"| node_command
node_addvm -->|"creates command"| node_command
node_app -->|"loads saved manga"| node_manager
node_app -->|"timer refreshes"| node_manager
node_app -->|"sets up client"| node_api
node_manager -->|"requests manga details"| node_api
node_manager -->|"checks chapters"| node_api
node_manager -->|"loads and saves"| node_context
node_context -->|"reads and writes"| node_sqlite
node_manager -->|"notifies new chapter"| node_toast
node_api -->|"sends API requests"| node_mangadex
node_toast -->|"shows toast"| node_windows

click node_app "https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/App.xaml.cs"
click node_mainview "https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Views/MainWindow.xaml.cs"
click node_mainvm "https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/ViewModel/MainViewModel.cs"
click node_addview "https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Views/AddManga.xaml.cs"
click node_addvm "https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/ViewModel/AddMangaViewModel.cs"
click node_command "https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Commands/RelayCommand.cs"
click node_manager "https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/MangaManager.cs"
click node_manga "https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/MangaDB.cs"
click node_api "https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/ApiConnect.cs"
click node_context "https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/MangaDataDBContext.cs"
click node_toast "https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/ToastNotificationManager.cs"

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_user toneBlue
class node_mainview,node_mainvm,node_addview,node_addvm,node_command toneAmber
class node_manager,node_manga,node_context toneMint
class node_api,node_sqlite,node_toast toneRose
class node_mangadex,node_windows toneIndigo
```

## Components

### Application lifecycle

- [App startup](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/App.xaml.cs): `MangaDexNotificator/App.xaml.cs`

### Desktop interface

- [Main window](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Views/MainWindow.xaml.cs): `MangaDexNotificator/Views/MainWindow.xaml.cs`
- [Main view model](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/ViewModel/MainViewModel.cs): `MangaDexNotificator/ViewModel/MainViewModel.cs`
- [Add manga window](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Views/AddManga.xaml.cs): `MangaDexNotificator/Views/AddManga.xaml.cs`
- [Add manga model](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/ViewModel/AddMangaViewModel.cs): `MangaDexNotificator/ViewModel/AddMangaViewModel.cs`
- [Relay command](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Commands/RelayCommand.cs): `MangaDexNotificator/Commands/RelayCommand.cs`

### Manga tracking

- [Manga manager](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/MangaManager.cs): `MangaDexNotificator/Models/MangaManager.cs`
- [Tracked manga](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/MangaDB.cs): `MangaDexNotificator/Models/MangaDB.cs`
- [Manga data context](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/MangaDataDBContext.cs): `MangaDexNotificator/Models/MangaDataDBContext.cs`

### External services

- [MangaDex API client](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/ApiConnect.cs): `MangaDexNotificator/Models/ApiConnect.cs`
- **SQLite database**
- [Toast notifications](https://github.com/kucheu/manganotificator/blob/master/MangaDexNotificator/Models/ToastNotificationManager.cs): `MangaDexNotificator/Models/ToastNotificationManager.cs`

### Other components

- **Desktop user**
- **MangaDex service**
- **Windows toast service**

## Connections

- Desktop user → Main window: uses
- App startup → Main window: opens
- Main window → Main view model: creates
- Main view model → Manga manager: gets manga list
- Main view model → Manga manager: requests refresh
- Main view model → Add manga window: opens add window
- Add manga window → Add manga model: creates
- Add manga model → Manga manager: adds manga
- Main view model → Relay command: creates commands
- Add manga model → Relay command: creates command
- App startup → Manga manager: loads saved manga
- App startup → Manga manager: timer refreshes
- App startup → MangaDex API client: sets up client
- Manga manager → MangaDex API client: requests manga details
- Manga manager → MangaDex API client: checks chapters
- Manga manager → Manga data context: loads and saves
- Manga data context → SQLite database: reads and writes
- Manga manager → Toast notifications: notifies new chapter
- MangaDex API client → MangaDex service: sends API requests
- Toast notifications → Windows toast service: shows toast
