Production-ready backend построенный на принципах Domain-Driven Design (DDD) и Clean Architecture.
Проект разделен на ограниченные контексты (Bounded Contexts), каждый из которых следует классической четырехслойной архитектуре:
src/FormaFlow/
├── Forms/ # Контекст управления формами и полями
├── Entries/ # Контекст записей и ответов пользователей
├── Reports/ # Контекст аналитики и генерации отчетов
├── Identity/ # Контекст аутентификации и пользователей
└── Shared/ # Общий код (Domain, Application, Infrastructure)
Каждый модуль внутри src/FormaFlow/ModuleName/ содержит:
- Domain: Сущности, агрегаты, доменные события и интерфейсы репозиториев.
- Application: Команды, запросы (CQRS) и их обработчики (Handlers).
- Infrastructure: Реализация репозиториев, контроллеры, миграции и внешние сервисы.
- PHP 8.3 + Laravel 11
- PostgreSQL
- Sanctum для аутентификации
- PHPUnit для тестирования
- Psalm для статического анализа
cp .env.example .env
composer install
php artisan key:generate
php artisan migratemake serve- запуск миграций и локального сервераmake test- запуск тестов (PHPUnit)make lint- запуск всех проверок качества кода (CS, Psalm, Prettier)make cs-fix- автоматическое исправление стиля кодаmake format- форматирование кода через Prettiermake analyze- статический анализ кода (Psalm)
POST /api/v1/register- РегистрацияPOST /api/v1/login- ВходPOST /api/v1/logout- ВыходGET /api/v1/profile- Профиль пользователяPATCH /api/v1/profile- Обновление профиля
GET /api/v1/forms- Список формPOST /api/v1/forms- Создать формуGET /api/v1/forms/{id}- Детали формыPATCH /api/v1/forms/{id}- Обновить формуDELETE /api/v1/forms/{id}- Удалить формуPOST /api/v1/forms/{id}/publish- ОпубликоватьPOST /api/v1/forms/{id}/fields- Добавить полеPATCH /api/v1/forms/{id}/fields/{fieldId}- Обновить полеDELETE /api/v1/forms/{id}/fields/{fieldId}- Удалить поле
GET /api/v1/entries- Список записейPOST /api/v1/entries- Создать записьGET /api/v1/entries/{id}- Детали записиPATCH /api/v1/entries/{id}- Обновить записьDELETE /api/v1/entries/{id}- Удалить записьGET /api/v1/entries/stats- Общая статистика
GET /api/v1/dashboard/week- Суммарно за неделюGET /api/v1/dashboard/trends- Тренды за периодPOST /api/v1/reports/summary- Сводный отчетPOST /api/v1/reports/time-series- Временные рядыGET /api/v1/reports/predefined/budget- Пресет: Бюджет
./vendor/bin/phpunit -c phpunit.xml
# Или через Makefile
make testmake deployКоманда выполняет обновление кода на сервере и запуск миграций.