Skip to content

humaNukr/TaskManager

Repository files navigation

KMA TaskManager

Опис проєкту

Система управління завданнями, побудована за принципами багатошарової архітектури та патерном MVVM. Реалізує повний цикл обробки даних — від ізольованого сховища через шар репозиторіїв і бізнес-сервісів до графічного інтерфейсу.

Структура рішення

Проєкт має високий рівень модульності. Кожна логічна складова винесена в окрему бібліотеку класів (Class Library) для суворого контролю залежностей та дотримання принципів Single Responsibility і Dependency Inversion:

  1. TaskManager.Common: Містить переліки (Enums), спільні для всіх рівнів застосунку.
  2. TaskManager.DataModels: Класи для "сирого" зберігання даних у БД/сховищі (ProjectDataModel, TaskDataModel). Не містять логіки відображення.
  3. TaskManager.DTOModels: Імутабельні Data Transfer Objects (наприклад, ProjectListDTO, TaskDetailsDto) для передачі готових до відображення даних у шар UI.
  4. TaskManager.CreateModels: Моделі для збору та первинної валідації даних при створенні нових сутностей користувачем.
  5. TaskManager.EditModels: Моделі для обробки та валідації даних при редагуванні існуючих сутностей.
  6. TaskManager.Storage: Визначає інтерфейс IStorageContext та містить реалізацію InMemoryStorageContext — імітацію бази даних з початковим набором тестових даних.
  7. TaskManager.Repositories: Шар доступу до даних. Відповідає за виконання запитів до Storage та повертає DataModels. Ізолює бізнес-логіку від деталей реалізації сховища.
  8. TaskManager.Services: Шар бізнес-логіки. Отримує дані з репозиторіїв, інкапсулює правила розрахунку статистики (наприклад, прогресу) та використовує мапери для конвертації DataModels у DTOModels.
  9. TaskManager.Maui: Графічний UI-застосунок на базі .NET MAUI. Побудований суворо за патерном MVVM без коду логіки у файлах .xaml.cs. Взаємодіє з даними виключно через Compiled Bindings (x:DataType) до DTO.
  10. TaskManager.Tests (не показано в загальній структурі, але присутнє): Юніт-тести (xUnit + Moq) для ізольованого тестування сервісів, маперів та розрахункових властивостей DTO-моделей.

Навігація у MAUI-застосунку

Застосунок використовує єдине головне вікно та Shell-навігацію. Містить три основні сторінки:

  • MainPage — відображає список усіх проєктів з назвою та розрахованим відсотком прогресу.
  • ProjectDetails — детальна інформація про проєкт: назва, тип, опис, загальний прогрес та список завдань цього проєкту.
  • TaskDetails — детальна інформація про конкретне завдання: статус виконання, пріоритет, дедлайн, індикатор прострочення та опис.

Навігація відбувається синхронно через Shell.Current.GoToAsync. Замість передачі цілих об'єктів у пам'яті, між сторінками передаються лише унікальні ідентифікатори (Guid), за якими ViewModels самостійно завантажують свіжі дані через абстракції сервісів.

Ключові принципи та архітектурні рішення

  • MVVM (Model-View-ViewModel): Повне розділення візуальної розмітки (XAML) від логіки керування станом (ViewModels). UI взаємодіє виключно з DTOModels і не має доступу до DataModels чи Repositories.
  • Dependency Injection (IoC): Створення та надання залежностей керується централізованим IoC-контейнером у MauiProgram.cs. Сервіси та UI-компоненти отримують необхідні залежності через конструктори (Constructor Injection).
  • Інкапсуляція та Immutability: Моделі DTO, CreateModels та EditModels є незмінними після ініціалізації (використання record та публічних властивостей тільки для читання { get; }), що захищає дані від неконтрольованих мутацій.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages