Каркас Laravel-приложения: Breeze+Sanctum, схема БД, модели, Docker

Laravel 13 в laravel-app/, Breeze (Blade) для сессионного логина + Sanctum
для API-токенов (задел под Vue/Flutter на этапе 3). Схема Postgres
перенесена из сырого SQL в Laravel-миграции (владелец схемы теперь Laravel,
Go-сервисы как читали/писали эти таблицы, так и продолжают). Роли/категории/
операторы условий — закрытые PHP-enum'ы (UserRole, DeviceCategory,
ConditionOperator); action_type правил намеренно остаётся строкой — открытый,
управляемый данными список, а не код. Сидер device_types с growbox-типами
как пример данных, не бизнес-логика.

Docker: один контейнер (php-fpm + nginx через supervisord, multi-stage
сборка vendor/assets). Образ пока не --no-dev — сидер использует fake()
для демо-аккаунта.

Проверено: миграции применяются на реальном Postgres (в докере и локально),
дефолтные тесты Breeze проходят (25/25), Breeze-логин подтверждён вживую
через браузер, Sanctum корректно отдаёт 401 на защищённый /api/user без
токена.
This commit is contained in:
2026-07-28 08:15:26 +05:00
parent abc83faf05
commit bb492785a4
132 changed files with 15894 additions and 72 deletions
+34 -4
View File
@@ -31,7 +31,6 @@ services:
- "${POSTGRES_PORT}:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
- ./migrations/postgres:/docker-entrypoint-initdb.d:ro
networks:
- home-automation
healthcheck:
@@ -175,6 +174,37 @@ services:
- home-automation
restart: unless-stopped
# Remaining app services (health-check-service, esp32-emulator,
# laravel-app) are added here as they get implemented — see
# services/*/README.md for the plan for each one.
laravel-app:
build: ./laravel-app
ports:
- "${LARAVEL_HTTP_PORT}:80"
environment:
APP_NAME: "Home Automation Platform"
APP_KEY: ${APP_KEY}
APP_ENV: ${APP_ENV}
APP_DEBUG: ${APP_DEBUG}
APP_URL: ${APP_URL}
DB_CONNECTION: pgsql
DB_HOST: postgres
DB_PORT: 5432
DB_DATABASE: ${POSTGRES_DB}
DB_USERNAME: ${POSTGRES_USER}
DB_PASSWORD: ${POSTGRES_PASSWORD}
SESSION_DRIVER: database
CACHE_STORE: database
QUEUE_CONNECTION: sync
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_PASSWORD: ${REDIS_PASSWORD}
LOG_CHANNEL: stderr
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
networks:
- home-automation
restart: unless-stopped
# Remaining app services (health-check-service, esp32-emulator) are added
# here as they get implemented — see services/*/README.md for the plan.