Projector - это универсальная система управления проектами, предназначенная для помощи в создании и сопровождении любого продукта или серии продуктов.
- Framework: Spring Boot 3.5.3
- Архитектура: Модульная, реактивная
- База данных: PostgreSQL 16 (R2DBC)
- Кэширование: Redis 7 (Reactive)
- Авторизация: JWT (RS256)
- Java: 17
- Сборщик: Gradle 8.5
- Framework: React 19
- TypeScript: Полная типизация
- Сборщик: Vite
- UI: Ant Design 5
- Роутинг: React Router
- State Management: Zustand + React Query
- HTTP Client: Axios
- Создание и управление roadmap на разных уровнях:
- Год
- Квартал
- Релиз
- Спринт
Иерархическая структура задач:
- Релиз
- Спринт
- Фича (Feature)
- Стори (Story)
- Задача (Task)
- Аналитика
- Дизайн
- Разработка
- Тестирование
- Сопровождение (баги, доработки)
- Расчетное и реальное время выполнения
- Сумма часов снизу вверх (агрегация по иерархии)
- Цена фичи
- Метрики по багам
- Анализ необходимости стабилизационного релиза
- Система ролей с правами доступа
- Назначение ролей пользователям
- JWT аутентификация
projector/
├── backend/ # Spring Boot бэкенд
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/projector/
│ │ │ │ ├── core/ # Основной модуль (JWT, Security)
│ │ │ │ ├── user/ # Модуль пользователей
│ │ │ │ ├── role/ # Модуль ролей
│ │ │ │ ├── roadmap/ # Модуль roadmap
│ │ │ │ ├── feature/ # Модуль features
│ │ │ │ └── task/ # Модуль задач
│ │ │ └── resources/
│ │ │ └── application.yml
│ │ └── test/ # E2E тесты
│ ├── build.gradle
│ └── README.md
├── frontend/ # React frontend
│ ├── src/
│ │ ├── api/ # API клиенты
│ │ ├── components/ # Переиспользуемые компоненты
│ │ ├── features/ # Feature-based структура
│ │ ├── hooks/ # Custom hooks
│ │ ├── stores/ # Zustand stores
│ │ └── types/ # TypeScript типы
│ └── README.md
├── docker-compose.yml # Docker Compose для БД
├── README.md # Этот файл
└── LICENSE # MIT License
- Java 17+
- Node.js 18+
- Docker и Docker Compose
- PostgreSQL 16+ (или через Docker)
- Redis 7+ (или через Docker)
-
Клонируйте репозиторий:
git clone <repository-url> cd projector
-
Запустите базу данных и Redis:
docker-compose up -d
-
Запустите backend:
cd backend ./gradlew bootRunBackend будет доступен по адресу
http://localhost:8080 -
Запустите frontend:
cd frontend npm install npm run devFrontend будет доступен по адресу
http://localhost:5173
DB_USERNAME- пользователь PostgreSQL (по умолчанию:projector)DB_PASSWORD- пароль PostgreSQL (по умолчанию:projector)DB_PORT- порт PostgreSQL (по умолчанию:5433)REDIS_HOST- хост Redis (по умолчанию:localhost)REDIS_PORT- порт Redis (по умолчанию:6380)SERVER_PORT- порт приложения (по умолчанию:8080)TOKEN_MAX_AGE- время жизни JWT токена в секундах (по умолчанию:3600)
Создайте файл .env.local:
VITE_API_URL=http://localhost:8080
После запуска backend, API документация доступна по адресу:
- Swagger UI: http://localhost:8080/swagger-ui.html
- OpenAPI JSON: http://localhost:8080/v3/api-docs
- OpenAPI YAML: http://localhost:8080/v3/api-docs.yaml
- Backend README - Подробная документация по backend
- Frontend README - Подробная документация по frontend
- API Testing Guide - Руководство по тестированию API
- IDE Setup - Настройка IDE для разработки
cd backend
./gradlew testcd frontend
npm testcd frontend
npm run test:e2eПроект включает docker-compose.yml для локальной разработки:
-
PostgreSQL 16 (
projector-postgres)- Порт:
5433:5432 - База данных:
projector - Пользователь:
projector - Пароль:
projector
- Порт:
-
Redis 7 (
projector-redis)- Порт:
6380:6379 - AOF (Append Only File) включен
- Порт:
# Запустить все сервисы
docker-compose up -d
# Остановить все сервисы
docker-compose down
# Остановить и удалить volumes (очистить данные)
docker-compose down -v
# Просмотр логов
docker-compose logs -f
# Проверка статуса
docker-compose ps- Алгоритм: RS256 (RSA)
- Хранение: Cookie с именем
X-Auth - Время жизни: Настраивается через
TOKEN_MAX_AGE
Система поддерживает гибкую систему ролей с правами доступа:
- Project Manager (PM)
- Team Lead
- Developer
- Tester
- Analyst
Backend:
cd backend
./gradlew buildFrontend:
cd frontend
npm run buildBackend (Spotless):
cd backend
./gradlew spotlessApplyFrontend (ESLint):
cd frontend
npm run lint
npm run lint:fixЭтот проект лицензирован под MIT License - см. файл LICENSE для деталей.
Приветствуются любые вклады в проект! Пожалуйста, создавайте issue или pull request.
Для вопросов и предложений создавайте issue в репозитории.
Projector - Помогаем создавать и сопровождать продукты эффективно! 🚀