Skip to content

RomanZemin/DoMoreDaily

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DoMoreDaily

DoMoreDaily - система управления задачами, позволяющая эффективно организовывать и отслеживать задачи и подзадачи. Проект включает фронтенд на Vue.js и бэкенд на C#, а также использует PostgreSQL в качестве базы данных.

Структура проекта

Backend

Проект на C# с использованием EntityFramework Core и Clean Architecture. Структура проекта:

  • DMD.Backend/DMD.Core/DMD.Application - Приложение и бизнес-логика.
  • DMD.Backend/DMD.Core/DMD.Domain - Доменная модель.
  • DMD.Backend/DMD.Infrastructure/DMD.Persistence - Доступ к данным.
  • DMD.Backend/DMD.Presentation/DMD.WebAPI - Web API.
  • DMD.Backend/DMD.Tests/DMD.Presentation.Tests - Unit тесты.

Frontend

Проект на Vue.js. Структура проекта:

  • src/App.vue - Главный компонент приложения.
  • src/components/CreateTaskForm.vue - Компонент для создания задач.
  • src/components/EditTaskForm.vue - Компонент для редактирования задач.
  • src/components/TaskDetails.vue - Компонент для отображения деталей задачи.
  • src/components/TaskList.vue - Компонент для отображения списка задач.
  • src/components/TaskItem.vue - Компонент для отображения одной задачи.
  • src/services/TaskService.ts - Сервис для работы с API задач.
  • src/services/types/TodoTask.ts - Типы для задач.

Запуск проекта

Frontend

1. Убедитесь, что у вас установлен Node.js.

2. Перейдите в директорию фронтенда и выполните следующие команды:

npm install
npm run dev

Backend

1. Убедитесь, что у вас установлен SDK .NET 8.

2. Клонируйте или загрузите этот репозиторий на ваш локальный компьютер.

3. Откройте решение DMD.Backend\DMD.WebAPI\DMD.Backend.sln в Visual Studio или другой IDE, поддерживающей .NET.

4. Выполните команды для установки зависимостей и запуска:

dotnet restore
dotnet build
dotnet run

5. Настройте необходимые параметры подключения к базе данных в файле appsettings.json проекта Infrastructure.

Установка базы данных

Если у вас возникают проблемы с установкой базы данных, которая лежит в репозитории, используйте следующий SQL-код для создания базы данных и таблиц:
-- Table: public.Tasks

CREATE TABLE IF NOT EXISTS public."Tasks"
(
    "Id" integer NOT NULL DEFAULT nextval('tasks_taskid_seq'::regclass),
    "ParentTaskID" integer,
    "TaskName" character varying(255) COLLATE pg_catalog."default" NOT NULL,
    "Description" text COLLATE pg_catalog."default",
    "Assignees" text COLLATE pg_catalog."default",
    "RegistrationDate" timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "Status" character varying(50) COLLATE pg_catalog."default" NOT NULL,
    "PlannedEffort" numeric(10,2) DEFAULT 0,
    "ActualEffort" numeric(10,2) DEFAULT 0,
    "CompletionDate" timestamp without time zone,
    CONSTRAINT tasks_pkey PRIMARY KEY ("Id"),
    CONSTRAINT fk_tasks_parenttask FOREIGN KEY ("ParentTaskID")
        REFERENCES public."Tasks" ("Id") MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE CASCADE,
    CONSTRAINT tasks_status_check CHECK ("Status"::text = ANY (ARRAY['Назначена'::character varying, 'Выполняется'::character varying, 'Приостановлена'::character varying, 'Завершена'::character varying]::text[]))
)

TABLESPACE pg_default;

ALTER TABLE IF EXISTS public."Tasks"
    OWNER to postgres;

-- Triggers

CREATE OR REPLACE TRIGGER trg_taskstatusupdate
    AFTER UPDATE 
    ON public."Tasks"
    FOR EACH ROW
    EXECUTE FUNCTION public.update_subtasks_status();

CREATE OR REPLACE TRIGGER trg_update_parent_effort_after_delete
    AFTER DELETE
    ON public."Tasks"
    FOR EACH ROW
    WHEN (old."ParentTaskID" IS NOT NULL)
    EXECUTE FUNCTION public.update_parent_task_effort();

CREATE OR REPLACE TRIGGER trg_update_parent_effort_after_insert
    AFTER INSERT
    ON public."Tasks"
    FOR EACH ROW
    WHEN (new."ParentTaskID" IS NOT NULL)
    EXECUTE FUNCTION public.update_parent_task_effort();

CREATE OR REPLACE TRIGGER trg_update_parent_effort_after_update
    AFTER UPDATE 
    ON public."Tasks"
    FOR EACH ROW
    WHEN (new."ParentTaskID" IS NOT NULL)
    EXECUTE FUNCTION public.update_parent_task_effort();

Особенности проекта

Шаблон проекта включает следующие функции:

  • Чистая архитектура: Проект структурирован в соответствии с принципами чистой архитектуры, что способствует разделению ответственности и ясной организации компонентов.
  • Принципы SOLID: Код следует принципам SOLID (Единая ответственность, Открытость/Закрытость, Подстановка Лисков, Разделение интерфейсов и Инверсия зависимостей), что упрощает поддержку и расширение.
  • Паттерн Repository: Паттерн Repository абстрагирует уровень доступа к данным и предоставляет единый интерфейс для работы с данными.
  • Паттерн Unit of Work: Паттерн Unit of Work помогает управлять транзакциями и обеспечивает согласованность при работе с несколькими репозиториями.
  • Entity Framework Core: Проект использует Entity Framework Core в качестве инструмента ORM (Object-Relational Mapping) для доступа к данным.
  • ASP.NET Core API: В проект включен проект ASP.NET Core API, который служит слоем API, обрабатывающим HTTP запросы и ответы.
  • CRUD операции: Шаблон проекта предоставляет основу для реализации полных операций CRUD (Создание, Чтение, Обновление, Удаление) для сущностей с использованием Entity Framework Core.
  • Внедрение зависимостей: Проект использует встроенный контейнер внедрения зависимостей в ASP.NET Core, что упрощает управление и внедрение зависимостей по всему приложению.
  • Модульное тестирование: В решении включены отдельные проекты для модульного тестирования уровней ядра, инфраструктуры и API.

Функциональный требования

  • FR001: Создание задач и подзадач.
  • FR002: Просмотр и редактирование всех полей задачи (кроме вычисляемых).
  • FR003: Удаление задач и подзадач.
  • FR004: Просмотр списка задач.
  • FR005: Управление статусами задач с учетом их подзадач.

Требования к интерфейсу пользователя

  • UI001: Иерархия задач представлена в виде дерева.
  • UI002: Список подзадач выбранной задачи в виде плоского списка.
  • UI003: Интерфейс организован по типу "Проводника Windows".
  • UI004: Переход между задачами без перезагрузки страницы (AJAX).

About

✅Done✅

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published