Desktop приложение + backend для:
- составления плана тренировок;
- фиксации результатов по упражнениям;
- отслеживания прогресса спортсмена.
- Java 21
- Spring Boot (Web, Validation)
- Hibernate / Spring Data JPA
- PostgreSQL
- Flyway (миграции БД)
- TypeScript
- Electron
- HTML/CSS/JavaScript desktop UI для работы тренера в широком экране
Примечание: в текущем окружении есть ограничения доступа к npm/maven registry (HTTP 403), поэтому установка новых пакетов ограничена.
Слои:
api— REST controllersservice— бизнес-логикаrepository— JPA repositoriesdomain— JPA entitiesdto— вход/выход APIcommon— единая обработка ошибокconfig— CORS и инфраструктурные настройки
Athlete— спортсменTrainingPlan— тренировочный планTrainingSession— факт/план конкретной тренировки
POST /api/athletes— создать спортсменаGET /api/athletes— список спортсменовGET /api/athletes/{id}— карточка спортсменаPUT /api/athletes/{id}— обновить данные спортсменаPOST /api/training-plans— создать планGET /api/training-plans?athleteId=— список планов (фильтр по спортсмену)GET /api/training-plans/{id}— получить план по idPOST /api/training-sessions— создать тренировочную сессиюGET /api/training-sessions?athleteId=— тренировки спортсменаPATCH /api/training-sessions/{sessionId}/actual— обновить фактические результатыGET /api/progress?athleteId=— агрегированный прогресс (completion rate, max weight, avg load)
application.yml поддерживает переменные окружения:
DB_URL(defaultjdbc:postgresql://localhost:5432/proforma)DB_USERNAME(defaultpostgres)DB_PASSWORD(defaultpostgres)
- SQL-миграции лежат в
backend-proforma/src/main/resources/db/migration - Базовая схема создаётся миграцией
V1__init_schema.sql
- Полностью переписан под desktop-сценарий на Electron
- Главное окно с 4 панелями:
- Спортсмены (выбор и добавление)
- Планы тренировок
- Тренировочные сессии
- Метрики прогресса
- Electron main process (
main.js) + preload (preload.js) - Renderer на HTML/CSS/JavaScript (
src/renderer) - API-клиент (
src/api/client.js)
API base URL определяется из:
PROFORMA_API_URL- fallback
http://localhost:8080/api
cd backend-proforma
./mvnw spring-boot:runcd frontend
npm install
npm start- Browser Fetch API для HTTP-запросов в renderer-процессе
- Context isolation + preload для безопасной передачи конфигурации API