Skip to content

iliami/TodoManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TodoManager

API менеджера задач для персонального пользования.

Идея

Создание групп и иерархий задач, прикрепление файлов к задачам, комментирование задач.

Архитектура "0 уровня"

2 модуля:

  • UserModule - отвечает за пользователей

  • PersonalTodoModule - отвечает за задачи

Независимы друг от друга, объединены в WebRoot.

Архитектура "1 уровня"

Каждый модуль построен на основе классической трехслойной архитектуре: есть основной слой Domain, у него есть порты, которые "заполняет" слой Infrastructure, а использует его слой API.

Технологии и паттерны и их применение

Result pattern + Functional style (railway-oriented programming). Но лучше без второго - понятнее. А также обогатить Error - сделать более различными.

CQS - своя реализация, без использования посредника (MediatR или аналоги).

У каждого модуля своя схема в базе данных. База данных - SQLite. Для более хорошей работы приложения нужно заменить.

Модули "общаются" асинхронно, через очередь сообщений. Используется собственная in-memory реализация через Channels. Для более хорошей работы приложения нужно заменить.

В PersonalTodoModule для хранения файлов используется локальное хранилище. Наверное, лучше заменить на объектное хранилище, но возможно придется несколько поменять логику.

Самое сложное было...

...реализовать согласованность при создании задачи: нужно учесть лимиты пользователя, сохранить файлы и создать записи об их сохранении, создать задачу с прикреплением к ней созданных записей о файлах, а также не забыть про файлы, которые сохранены, но записей о них нет.

...написать хоть какие-то тесты...

Что добавить (фичи)

В PersonalTodoModule:

  • Просмотр недавно удаленных задач и файлов.
  • Возможность восстановления недавно удаленных задач, файлов, комментариев.
  • Возможность "поделиться" задачей.
  • Уведомления о задаче с подходящей к концу дате выполнения.

В UserModule:

  • Смена пароля.
  • Привязка аккаунтов для уведомлений.
  • Аватарки.

Добавить GroupTodoModule - модуль для работы с задачами в группе: кастомные роли в группе, функционал из PersonalTodoModule, но с условием роли пользователя в группе.

Что добавить (технологии)

Логирование, сбор метрик и трейсов, контейнеризация, внешний сервис вместо UserModule.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages