# maksymgolovach-boop/projectpiu architecture

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

- Interactive diagram: https://gitdiagram.com/maksymgolovach-boop/projectpiu
- Repository: https://github.com/maksymgolovach-boop/projectpiu

## Overview

ProjectPIU is a WPF personal schedule manager. A user manages an activity catalogue, schedules activities into weekly time slots, and tracks deadlines; the main window coordinates these workflows through storage interfaces and presents the resulting lists and schedule. Domain models represent activities, scheduled time ranges, and deadlines. The README also documents search, editing, deletion, weekly/daily views, and both text-file and in-memory storage. Some UI and storage wiring is inferred from the README and tree; the factory implementation and several handlers were not sampled.

Main entry points: [`Graphic_interface/MainWindow.xaml.cs`](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/MainWindow.xaml.cs) (Main window), [`Activitate/Activitateclase.cs`](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/Activitateclase.cs) (Activity model), [`Activitate/ScheduledActivity.cs`](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/ScheduledActivity.cs) (Scheduled activity), [`StocareOrar/IstocareDate.cs`](https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/IstocareDate.cs) (Activity storage API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["WPF presentation"]
  node_main["Main window<br/>[MainWindow.xaml.cs]"]
  node_activity_dialogs["Activity dialogs"]
  node_edit_dialog["Activity editor<br/>[ModifyAct.xaml.cs]"]
  node_deadline_dialog["Deadline dialog"]
  node_schedule_dialog["Schedule dialogs"]
  node_direct_dialog["Direct scheduling"]
  node_select_dialog["Activity selection"]
end

subgraph group_domain["Schedule domain"]
  node_activity["Activity model<br/>[Activitateclase.cs]"]
  node_scheduled["Scheduled activity"]
  node_deadline["Deadline model<br/>[Deadline.cs]"]
  node_activity_types["Activity types<br/>[ActivitiesType.cs]"]
  node_weekdays["Weekday values<br/>[WeekDays.cs]"]
  node_view_item["Schedule view item"]
end

subgraph group_contracts["Storage contracts"]
  node_activity_contract["Activity storage API<br/>[IstocareDate.cs]"]
  node_deadline_contract["Deadline storage API<br/>[IstocareDate.cs]"]
  node_schedule_contract["Schedule storage API<br/>[IstocareDate.cs]"]
end

subgraph group_persistence["Storage implementations"]
  node_activity_text[("Text activity store")]
  node_deadline_text[("Text deadline store")]
  node_schedule_text[("Text schedule store")]
  node_activity_memory["Memory activity store"]
  node_deadline_memory["Memory deadline store"]
  node_schedule_memory["Memory schedule store"]
end

node_user(("User"))

node_user -->|"uses"| node_main
node_main -->|"opens"| node_activity_dialogs
node_main -->|"opens"| node_edit_dialog
node_main -->|"opens"| node_deadline_dialog
node_main -->|"opens"| node_schedule_dialog
node_main -->|"opens"| node_direct_dialog
node_direct_dialog -->|"opens"| node_select_dialog
node_main -->|"reads and writes"| node_activity_contract
node_main -->|"reads and writes"| node_deadline_contract
node_main -->|"reads and writes"| node_schedule_contract
node_main -->|"builds display"| node_view_item
node_main -->|"loads and displays"| node_activity
node_main -->|"loads and displays"| node_deadline
node_main -->|"creates and removes"| node_scheduled
node_activity_dialogs -->|"creates"| node_activity
node_edit_dialog -->|"edits"| node_activity
node_deadline_dialog -->|"creates"| node_deadline
node_schedule_dialog -->|"creates"| node_scheduled
node_direct_dialog -->|"creates"| node_scheduled
node_direct_dialog -->|"selects day"| node_weekdays
node_activity -->|"uses"| node_activity_types
node_scheduled -->|"references by ID"| node_activity
node_schedule_text -->|"implements"| node_activity_contract
node_activity_text -->|"implements"| node_activity_contract
node_deadline_text -->|"implements"| node_deadline_contract
node_activity_memory -->|"implements"| node_activity_contract
node_deadline_memory -->|"implements"| node_deadline_contract
node_schedule_memory -->|"implements"| node_schedule_contract
node_activity_memory -->|"stores"| node_activity
node_deadline_memory -->|"stores"| node_deadline
node_schedule_memory -->|"stores"| node_scheduled
node_activity_text -->|"serializes"| node_activity
node_deadline_text -->|"serializes"| node_deadline
node_schedule_text -->|"serializes"| node_scheduled
node_schedule_text -->|"looks up activities"| node_activity_contract
node_schedule_memory -->|"looks up activities"| node_activity_contract

click node_main "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/MainWindow.xaml.cs"
click node_activity_dialogs "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/AddActivityWindow.xaml.cs"
click node_edit_dialog "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/ModifyAct.xaml.cs"
click node_deadline_dialog "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/AddDeadlineWindow.xaml.cs"
click node_schedule_dialog "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/AddtoSchedule.xaml.cs"
click node_direct_dialog "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/AddDirectlyToSchedule.xaml.cs"
click node_select_dialog "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/SelectActivityDialog.xaml.cs"
click node_activity "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/Activitateclase.cs"
click node_scheduled "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/ScheduledActivity.cs"
click node_deadline "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/Deadline.cs"
click node_activity_types "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/enums/ActivitiesType.cs"
click node_weekdays "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/enums/WeekDays.cs"
click node_view_item "https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/ActivityViewItem.cs"
click node_activity_contract "https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/IstocareDate.cs"
click node_deadline_contract "https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/IstocareDate.cs"
click node_schedule_contract "https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/IstocareDate.cs"
click node_activity_text "https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministareActivitatiText.cs"
click node_deadline_text "https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministrareDeadlinesText.cs"
click node_schedule_text "https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministareOrarText.cs"
click node_activity_memory "https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministrareActivitatiMemorie.cs"
click node_deadline_memory "https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministrareDeadlinesMemorie.cs"
click node_schedule_memory "https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministrareOrarMemorie.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_main,node_activity_dialogs,node_edit_dialog,node_deadline_dialog,node_schedule_dialog,node_direct_dialog,node_select_dialog,node_user toneBlue
class node_activity,node_scheduled,node_deadline,node_activity_types,node_weekdays,node_view_item toneAmber
class node_activity_contract,node_deadline_contract,node_schedule_contract toneMint
class node_activity_text,node_deadline_text,node_schedule_text,node_activity_memory,node_deadline_memory,node_schedule_memory toneRose
```

## Components

### WPF presentation

- [Main window](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/MainWindow.xaml.cs): `Graphic_interface/MainWindow.xaml.cs`
- [Activity dialogs](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/AddActivityWindow.xaml.cs): `Graphic_interface/AddActivityWindow.xaml.cs`
- [Activity editor](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/ModifyAct.xaml.cs): `Graphic_interface/ModifyAct.xaml.cs`
- [Deadline dialog](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/AddDeadlineWindow.xaml.cs): `Graphic_interface/AddDeadlineWindow.xaml.cs`
- [Schedule dialogs](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/AddtoSchedule.xaml.cs): `Graphic_interface/AddtoSchedule.xaml.cs`
- [Direct scheduling](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/AddDirectlyToSchedule.xaml.cs): `Graphic_interface/AddDirectlyToSchedule.xaml.cs`
- [Activity selection](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Graphic_interface/SelectActivityDialog.xaml.cs): `Graphic_interface/SelectActivityDialog.xaml.cs`

### Schedule domain

- [Activity model](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/Activitateclase.cs): `Activitate/Activitateclase.cs`
- [Scheduled activity](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/ScheduledActivity.cs): `Activitate/ScheduledActivity.cs`
- [Deadline model](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/Deadline.cs): `Activitate/Deadline.cs`
- [Activity types](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/enums/ActivitiesType.cs): `Activitate/enums/ActivitiesType.cs`
- [Weekday values](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/enums/WeekDays.cs): `Activitate/enums/WeekDays.cs`
- [Schedule view item](https://github.com/maksymgolovach-boop/projectpiu/blob/master/Activitate/ActivityViewItem.cs): `Activitate/ActivityViewItem.cs`

### Storage contracts

- [Activity storage API](https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/IstocareDate.cs): `StocareOrar/IstocareDate.cs`
- [Deadline storage API](https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/IstocareDate.cs): `StocareOrar/IstocareDate.cs`
- [Schedule storage API](https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/IstocareDate.cs): `StocareOrar/IstocareDate.cs`

### Storage implementations

- [Text activity store](https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministareActivitatiText.cs): `StocareOrar/AdministareActivitatiText.cs`
- [Text deadline store](https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministrareDeadlinesText.cs): `StocareOrar/AdministrareDeadlinesText.cs`
- [Text schedule store](https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministareOrarText.cs): `StocareOrar/AdministareOrarText.cs`
- [Memory activity store](https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministrareActivitatiMemorie.cs): `StocareOrar/AdministrareActivitatiMemorie.cs`
- [Memory deadline store](https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministrareDeadlinesMemorie.cs): `StocareOrar/AdministrareDeadlinesMemorie.cs`
- [Memory schedule store](https://github.com/maksymgolovach-boop/projectpiu/blob/master/StocareOrar/AdministrareOrarMemorie.cs): `StocareOrar/AdministrareOrarMemorie.cs`

### Other components

- **User**

## Connections

- User → Main window: uses
- Main window → Activity dialogs: opens
- Main window → Activity editor: opens
- Main window → Deadline dialog: opens
- Main window → Schedule dialogs: opens
- Main window → Direct scheduling: opens
- Direct scheduling → Activity selection: opens
- Main window → Activity storage API: reads and writes
- Main window → Deadline storage API: reads and writes
- Main window → Schedule storage API: reads and writes
- Main window → Schedule view item: builds display
- Main window → Activity model: loads and displays
- Main window → Deadline model: loads and displays
- Main window → Scheduled activity: creates and removes
- Activity dialogs → Activity model: creates
- Activity editor → Activity model: edits
- Deadline dialog → Deadline model: creates
- Schedule dialogs → Scheduled activity: creates
- Direct scheduling → Scheduled activity: creates
- Direct scheduling → Weekday values: selects day
- Activity model → Activity types: uses
- Scheduled activity → Activity model: references by ID
- Text schedule store → Activity storage API: implements
- Text activity store → Activity storage API: implements
- Text deadline store → Deadline storage API: implements
- Memory activity store → Activity storage API: implements
- Memory deadline store → Deadline storage API: implements
- Memory schedule store → Schedule storage API: implements
- Memory activity store → Activity model: stores
- Memory deadline store → Deadline model: stores
- Memory schedule store → Scheduled activity: stores
- Text activity store → Activity model: serializes
- Text deadline store → Deadline model: serializes
- Text schedule store → Scheduled activity: serializes
- Text schedule store → Activity storage API: looks up activities
- Memory schedule store → Activity storage API: looks up activities
