Учебный проект системы управления проектами и задачами на Java, Spring Boot, Jmix и Vaadin.
Приложение предназначено для базового управления проектами: создания проектов, постановки задач, назначения исполнителей, учёта трудозатрат и просмотра агрегированной статистики по проектам.
В текущей версии проекта реализованы следующие сущности и сценарии:
Проекты
- название проекта
- описание проекта
- назначение менеджера проекта
- связь проекта со списком задач
Задачи
- название задачи
- описание
- срок выполнения
- исполнитель
- приоритет (
LOW,MEDIUM,HIGH) - плановая оценка трудозатрат
- вложение файла
- привязка к проекту
Учёт времени
- запись фактически затраченного времени по задаче
- дата и описание записи
- связь записи времени с пользователем и задачей
Пользователи
- username
- имя и фамилия
- аватар
- часовой пояс
- статус активности
Статистика по проектам
- количество задач в проекте
- суммарные плановые трудозатраты
- суммарные фактические трудозатраты
В проекте реализованы роли и ограничения доступа на уровне данных:
ProjectManagerRoleFullAccessRoleCombinedManagerRoleRestrictedProjectsRoleRestrictedTimeEntriesRoleUiMinimalRole
Примеры реализованных ограничений:
- менеджер может изменять и удалять только те проекты, где он назначен менеджером;
- пользователь видит записи времени, созданные им самим, либо относящиеся к проектам, которыми он управляет.
Для расчёта статистики по проектам реализован отдельный сервис ProjectStatsService, который:
- загружает проекты;
- считает количество задач;
- суммирует плановые трудозатраты;
- рассчитывает фактические трудозатраты по
TimeEntryчерез запрос к хранилищу данных.
Интерфейс построен на 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
Сущность проекта содержит:
namedescriptionmanagertasks
Сущность задачи содержит:
namedescriptiondueDateassigneepriorityestimationattachmentproject
Сущность учёта времени содержит:
tasktimeSpententryDateuserdescription
Пользовательская сущность содержит:
usernamepasswordfirstNamelastNameemailavatartimeZoneIdactive
DTO/проекция для отображения статистики по проектам:
projectNametasksCountplannedEffortsactualEfforts
- Java 17+ или совместимая версия для Spring Boot / Jmix
- Node.js
- npm или pnpm
- Клонировать репозиторий:
git clone https://github.com/ru6ich/ProjectManagment.git
cd ProjectManagment- Запустить приложение через 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=adminui.login.defaultPassword=admin
Для публичного или реального использования такие значения нужно менять.
Этот проект демонстрирует навыки в следующих областях:
- проектирование предметной области через связанные сущности;
- работа с JPA / ORM-моделями;
- разработка бизнес-приложения на Spring Boot + Jmix;
- настройка ролевой модели и row-level security;
- построение административного UI на Vaadin;
- расчёт прикладной статистики по данным проекта.
Если развивать проект дальше, можно добавить:
- статусы задач (
todo,in progress,done); - комментарии к задачам;
- фильтрацию и поиск по проектам и задачам;
- дашборд с графиками;
- REST API для интеграций;
- Docker-сборку и контейнерный запуск;
- более явное разделение backend и frontend;
- тесты сервисного слоя и security-сценариев.