Skip to content

Repository files navigation

ProjectManagment

Учебный проект системы управления проектами и задачами на Java, Spring Boot, Jmix и Vaadin.

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

Что реализовано

В текущей версии проекта реализованы следующие сущности и сценарии:

  • Проекты

    • название проекта
    • описание проекта
    • назначение менеджера проекта
    • связь проекта со списком задач
  • Задачи

    • название задачи
    • описание
    • срок выполнения
    • исполнитель
    • приоритет (LOW, MEDIUM, HIGH)
    • плановая оценка трудозатрат
    • вложение файла
    • привязка к проекту
  • Учёт времени

    • запись фактически затраченного времени по задаче
    • дата и описание записи
    • связь записи времени с пользователем и задачей
  • Пользователи

    • username
    • имя и фамилия
    • email
    • аватар
    • часовой пояс
    • статус активности
  • Статистика по проектам

    • количество задач в проекте
    • суммарные плановые трудозатраты
    • суммарные фактические трудозатраты

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

Ролевая модель и ограничения доступа

В проекте реализованы роли и ограничения доступа на уровне данных:

  • ProjectManagerRole
  • FullAccessRole
  • CombinedManagerRole
  • RestrictedProjectsRole
  • RestrictedTimeEntriesRole
  • UiMinimalRole

Примеры реализованных ограничений:

  • менеджер может изменять и удалять только те проекты, где он назначен менеджером;
  • пользователь видит записи времени, созданные им самим, либо относящиеся к проектам, которыми он управляет.

Отдельный сервис статистики

Для расчёта статистики по проектам реализован отдельный сервис ProjectStatsService, который:

  • загружает проекты;
  • считает количество задач;
  • суммирует плановые трудозатраты;
  • рассчитывает фактические трудозатраты по TimeEntry через запрос к хранилищу данных.

UI на Vaadin / Jmix

Интерфейс построен на Jmix Flow UI и содержит отдельные представления для:

  • авторизации;
  • главного экрана;
  • проектов;
  • задач;
  • статистики проектов;
  • детального просмотра задач;
  • учёта времени;
  • пользователей.

Стек технологий

  • Java
  • Spring Boot
  • Jmix 2.3
  • Vaadin
  • Gradle
  • HSQLDB
  • Liquibase
  • Vite / frontend toolchain, который используется Jmix/Vaadin

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

ProjectManagment/
├── frontend/ # frontend-часть, связанная с Vaadin/Jmix
├── gradle/ # Gradle wrapper
├── src/
│ ├── main/
│ │ ├── java/com/rakhmatullov/projectmanagment/
│ │ │ ├── app/ # прикладные сервисы
│ │ │ ├── entity/ # сущности проекта
│ │ │ ├── security/ # роли и ограничения доступа
│ │ │ └── view/ # UI-представления
│ │ └── resources/ # конфигурация и ресурсы приложения
│ └── test/
├── build.gradle
├── settings.gradle
└── package.json

Основные сущности

Project

Сущность проекта содержит:

  • name
  • description
  • manager
  • tasks

Task

Сущность задачи содержит:

  • name
  • description
  • dueDate
  • assignee
  • priority
  • estimation
  • attachment
  • project

TimeEntry

Сущность учёта времени содержит:

  • task
  • timeSpent
  • entryDate
  • user
  • description

User

Пользовательская сущность содержит:

  • username
  • password
  • firstName
  • lastName
  • email
  • avatar
  • timeZoneId
  • active

ProjectStats

DTO/проекция для отображения статистики по проектам:

  • projectName
  • tasksCount
  • plannedEfforts
  • actualEfforts

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

Требования

  • Java 17+ или совместимая версия для Spring Boot / Jmix
  • Node.js
  • npm или pnpm

Локальный запуск

  1. Клонировать репозиторий:
git clone https://github.com/ru6ich/ProjectManagment.git
cd ProjectManagment
  1. Запустить приложение через Gradle wrapper:
./gradlew bootRun

Для Windows:

gradlew.bat bootRun

По умолчанию приложение использует HSQLDB и локальный файл базы данных через параметр main.datasource.url. Конфигурация находится в src/main/resources/application.properties.

Конфигурация

В проекте уже настроены:

  • HSQLDB как основное хранилище;
  • Liquibase для changelog базы данных;
  • Jmix Flow UI;
  • стартовые параметры входа для разработки.

Сейчас в application.properties указаны стандартные dev-учётные данные:

  • ui.login.defaultUsername=admin
  • ui.login.defaultPassword=admin

Для публичного или реального использования такие значения нужно менять.

Что показывает проект

Этот проект демонстрирует навыки в следующих областях:

  • проектирование предметной области через связанные сущности;
  • работа с JPA / ORM-моделями;
  • разработка бизнес-приложения на Spring Boot + Jmix;
  • настройка ролевой модели и row-level security;
  • построение административного UI на Vaadin;
  • расчёт прикладной статистики по данным проекта.

Что можно улучшить дальше

Если развивать проект дальше, можно добавить:

  • статусы задач (todo, in progress, done);
  • комментарии к задачам;
  • фильтрацию и поиск по проектам и задачам;
  • дашборд с графиками;
  • REST API для интеграций;
  • Docker-сборку и контейнерный запуск;
  • более явное разделение backend и frontend;
  • тесты сервисного слоя и security-сценариев.

About

Учебная система управления проектами на Java и Jmix: проекты, задачи, учёт времени, статистика и ролевая модель доступа.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages