# amiansleepy/mytodo architecture

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

## Overview

MyToDo (DailyApp) is a WPF desktop task and memo manager backed by an ASP.NET Core API and EF Core. The main workflow is user login, navigation to a dashboard or management view, then querying or changing tasks and memos through HTTP requests persisted by the API. The README documents filtering, status changes, dialogs, settings, and account registration; sampled code confirms dashboard requests, API persistence, and startup login. Some view-model and API wiring is based on documented capabilities because those sources were not sampled.

Main entry points: [`DailyApp/DailyApp.WPF/HttpClients/HttpRestClient.cs`](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/HttpClients/HttpRestClient.cs) (REST client), [`DailyApp/DailyApp.Api/AutoMapperSettingscs.cs`](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/AutoMapperSettingscs.cs) (Entity mapping), [`DailyApp/DailyApp.WPF/ViewModels/HomeUCViewModel.cs`](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/ViewModels/HomeUCViewModel.cs) (Dashboard), [`DailyApp/DailyApp.Api/Controllers/WaitController.cs`](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/Controllers/WaitController.cs) (Task API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["WPF Client"]
  node_app["Prism startup<br/>[App.xaml.cs]"]
  node_shell["Main window<br/>[MainWin.xaml.cs]"]
  node_navigation["Navigation and settings"]
  node_dashboard["Dashboard<br/>[HomeUCViewModel.cs]"]
  node_http["REST client<br/>[HttpRestClient.cs]"]
end

subgraph group_account["Account Access"]
  node_login["Login view model"]
  node_accountapi["Account API"]
  node_accountdto["Account DTO<br/>[AccountInfoDTO.cs]"]
end

subgraph group_tasks["Task Management"]
  node_waitui["Task view model<br/>[WaitUCViewModel.cs]"]
  node_waitdialogs["Task dialogs<br/>[Dialogs]"]
  node_waitapi["Task API<br/>[WaitController.cs]"]
  node_waitdto["Task DTO<br/>[WaitInfoDTO.cs]"]
  node_waitentity["Task entity<br/>[WaitInfo.cs]"]
end

subgraph group_memos["Memo Management"]
  node_memoui["Memo view model<br/>[MemoUCViewModel.cs]"]
  node_memodialogs["Memo dialogs<br/>[Dialogs]"]
  node_memoapi["Memo API<br/>[MemoController.cs]"]
  node_memodto["Memo DTO<br/>[MemoInfoDTO.cs]"]
  node_memoentity["Memo entity<br/>[MemoInfo.cs]"]
end

subgraph group_backend["API and Persistence"]
  node_database[("SQL Server data<br/>[DaliyDbContext.cs]")]
  node_mapping["Entity mapping"]
end

node_user(("Desktop user"))

node_user -->|"starts"| node_app
node_app -->|"creates shell"| node_shell
node_app -->|"shows login"| node_login
node_login -->|"sends credentials"| node_http
node_http -->|"HTTP request"| node_accountapi
node_accountapi -->|"checks or saves account"| node_database
node_accountapi -->|"maps account DTO"| node_mapping
node_mapping -->|"maps data"| node_accountdto
node_login -->|"passes login name"| node_navigation
node_user -->|"uses app"| node_shell
node_shell -->|"hosts navigation"| node_navigation
node_navigation -->|"navigates"| node_dashboard
node_dashboard -->|"requests stats and lists"| node_http
node_user -->|"manages tasks"| node_waitui
node_waitui -->|"opens dialogs"| node_waitdialogs
node_waitui -->|"requests task operations"| node_http
node_dashboard -->|"requests task stats"| node_waitapi
node_http -->|"HTTP request"| node_waitapi
node_waitapi -->|"queries and saves tasks"| node_database
node_waitapi -->|"maps task DTO"| node_mapping
node_mapping -->|"maps data"| node_waitdto
node_user -->|"manages memos"| node_memoui
node_memoui -->|"opens dialogs"| node_memodialogs
node_memoui -->|"requests memo operations"| node_http
node_dashboard -->|"requests memo stats"| node_memoapi
node_http -->|"HTTP request"| node_memoapi
node_memoapi -->|"queries and saves memos"| node_database
node_memoapi -->|"maps memo DTO"| node_mapping
node_mapping -->|"maps data"| node_memodto

click node_app "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/App.xaml.cs"
click node_shell "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/Views/MainWin.xaml.cs"
click node_navigation "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/ViewModels/MainWinViewModel.cs"
click node_dashboard "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/ViewModels/HomeUCViewModel.cs"
click node_http "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/HttpClients/HttpRestClient.cs"
click node_login "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/ViewModels/LoginUCViewModel.cs"
click node_accountapi "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/Controllers/AccountController.cs"
click node_accountdto "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DTOs/AccountInfoDTO.cs"
click node_waitui "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/ViewModels/WaitUCViewModel.cs"
click node_waitdialogs "https://github.com/amiansleepy/mytodo/tree/master/DailyApp/DailyApp.WPF/ViewModels/Dialogs"
click node_waitapi "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/Controllers/WaitController.cs"
click node_waitdto "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DTOs/WaitInfoDTO.cs"
click node_waitentity "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DataModel/WaitInfo.cs"
click node_memoui "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/ViewModels/MemoUCViewModel.cs"
click node_memodialogs "https://github.com/amiansleepy/mytodo/tree/master/DailyApp/DailyApp.WPF/ViewModels/Dialogs"
click node_memoapi "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/Controllers/MemoController.cs"
click node_memodto "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DTOs/MemoInfoDTO.cs"
click node_memoentity "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DataModel/MemoInfo.cs"
click node_database "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DataModel/DaliyDbContext.cs"
click node_mapping "https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/AutoMapperSettingscs.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_shell,node_navigation,node_dashboard,node_http,node_user toneBlue
class node_login,node_accountapi,node_accountdto toneAmber
class node_waitui,node_waitdialogs,node_waitapi,node_waitdto,node_waitentity toneMint
class node_memoui,node_memodialogs,node_memoapi,node_memodto,node_memoentity toneRose
class node_database,node_mapping toneIndigo
```

## Components

### WPF Client

- [Prism startup](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/App.xaml.cs): `DailyApp/DailyApp.WPF/App.xaml.cs`
- [Main window](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/Views/MainWin.xaml.cs): `DailyApp/DailyApp.WPF/Views/MainWin.xaml.cs`
- [Navigation and settings](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/ViewModels/MainWinViewModel.cs): `DailyApp/DailyApp.WPF/ViewModels/MainWinViewModel.cs`
- [Dashboard](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/ViewModels/HomeUCViewModel.cs): `DailyApp/DailyApp.WPF/ViewModels/HomeUCViewModel.cs`
- [REST client](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/HttpClients/HttpRestClient.cs): `DailyApp/DailyApp.WPF/HttpClients/HttpRestClient.cs`

### Account Access

- [Login view model](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/ViewModels/LoginUCViewModel.cs): `DailyApp/DailyApp.WPF/ViewModels/LoginUCViewModel.cs`
- [Account API](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/Controllers/AccountController.cs): `DailyApp/DailyApp.Api/Controllers/AccountController.cs`
- [Account DTO](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DTOs/AccountInfoDTO.cs): `DailyApp/DailyApp.Api/DTOs/AccountInfoDTO.cs`

### Task Management

- [Task view model](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/ViewModels/WaitUCViewModel.cs): `DailyApp/DailyApp.WPF/ViewModels/WaitUCViewModel.cs`
- [Task dialogs](https://github.com/amiansleepy/mytodo/tree/master/DailyApp/DailyApp.WPF/ViewModels/Dialogs): `DailyApp/DailyApp.WPF/ViewModels/Dialogs`
- [Task API](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/Controllers/WaitController.cs): `DailyApp/DailyApp.Api/Controllers/WaitController.cs`
- [Task DTO](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DTOs/WaitInfoDTO.cs): `DailyApp/DailyApp.Api/DTOs/WaitInfoDTO.cs`
- [Task entity](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DataModel/WaitInfo.cs): `DailyApp/DailyApp.Api/DataModel/WaitInfo.cs`

### Memo Management

- [Memo view model](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.WPF/ViewModels/MemoUCViewModel.cs): `DailyApp/DailyApp.WPF/ViewModels/MemoUCViewModel.cs`
- [Memo dialogs](https://github.com/amiansleepy/mytodo/tree/master/DailyApp/DailyApp.WPF/ViewModels/Dialogs): `DailyApp/DailyApp.WPF/ViewModels/Dialogs`
- [Memo API](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/Controllers/MemoController.cs): `DailyApp/DailyApp.Api/Controllers/MemoController.cs`
- [Memo DTO](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DTOs/MemoInfoDTO.cs): `DailyApp/DailyApp.Api/DTOs/MemoInfoDTO.cs`
- [Memo entity](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DataModel/MemoInfo.cs): `DailyApp/DailyApp.Api/DataModel/MemoInfo.cs`

### API and Persistence

- [SQL Server data](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/DataModel/DaliyDbContext.cs): `DailyApp/DailyApp.Api/DataModel/DaliyDbContext.cs`
- [Entity mapping](https://github.com/amiansleepy/mytodo/blob/master/DailyApp/DailyApp.Api/AutoMapperSettingscs.cs): `DailyApp/DailyApp.Api/AutoMapperSettingscs.cs`

### Other components

- **Desktop user**

## Connections

- Desktop user → Prism startup: starts
- Prism startup → Main window: creates shell
- Prism startup → Login view model: shows login
- Login view model → REST client: sends credentials
- REST client → Account API: HTTP request
- Account API → SQL Server data: checks or saves account
- Account API → Entity mapping: maps account DTO
- Entity mapping → Account DTO: maps data
- Login view model → Navigation and settings: passes login name
- Desktop user → Main window: uses app
- Main window → Navigation and settings: hosts navigation
- Navigation and settings → Dashboard: navigates
- Dashboard → REST client: requests stats and lists
- Desktop user → Task view model: manages tasks
- Task view model → Task dialogs: opens dialogs
- Task view model → REST client: requests task operations
- Dashboard → Task API: requests task stats
- REST client → Task API: HTTP request
- Task API → SQL Server data: queries and saves tasks
- Task API → Entity mapping: maps task DTO
- Entity mapping → Task DTO: maps data
- Desktop user → Memo view model: manages memos
- Memo view model → Memo dialogs: opens dialogs
- Memo view model → REST client: requests memo operations
- Dashboard → Memo API: requests memo stats
- REST client → Memo API: HTTP request
- Memo API → SQL Server data: queries and saves memos
- Memo API → Entity mapping: maps memo DTO
- Entity mapping → Memo DTO: maps data
