Search by

phpsoftbox / app-backend

inspector-who

Backend application skeleton for PhpSoftBox

Package info

github.com/phpsoftbox/app-backend

Type:project

pkg:composer/phpsoftbox/app-backend

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-09-29 10:37 UTC

This package is auto-updated.

Last update: 2026-09-29 11:50:08 UTC


README

Минимальный backend‑скелет приложения на PhpSoftBox.

Установка через create-project

composer create-project phpsoftbox/app-backend my-app

Быстрый старт

  1. Окружение после create-project будет создано автоматически — config/env/.env из примера со случайным APP_KEY (composer app:generate-key). Вручную:
cp config/env/.env.example config/env/.env
composer app:generate-key

APP_ENV — dev, test, demo или prod (production, development, local, testing приводятся к ним); неизвестное значение — ошибка конфигурации.

  1. Установи зависимости:
composer install
yarn install
  1. Запусти Vite:
yarn dev

Структура

  • src/Cli - handlers консольных команд приложения
  • src/Feature/{FeatureName}/Command/* - command + handler бизнес-сценариев
  • src/Http/Action - invokable HTTP actions
  • src/Http/Request - RequestSchema
  • src/Http/Resource - API resources
  • src/Inertia - базовые shared data providers для Inertia
  • src/Rule - кастомные validation rules
  • database/fixtures - fixtures для интеграционных тестов и seed-like сценариев
  • database/migrations - base-skeleton миграции, включая users, user_tokens, roles/permissions
  • local - runtime-корень приложения; storage, logs, cache создаются через App\Path

Auth recipe использует DatabaseUserProvider, SessionGuard, remember-cookie restore flow и AreaAccessMiddleware для admin area. Минимальные таблицы users, user_tokens, roles, permissions, role_permissions, user_roles, user_permissions лежат в database/migrations.

Для кастомного приложения package-миграции можно опубликовать из vendor:

php psb db:migrate:publish --package=phpsoftbox/auth
php psb db:migrate:publish --package=phpsoftbox/session

По умолчанию session хранится через native PHP session. DB session storage включается явно через APP_SESSION_DRIVER=database.

SSR для Inertia выключен по умолчанию. Включайте его явно через INERTIA_SSR=1 и настройку VITE_SSR_URL, когда SSR server реально запущен.

Теги dev-сервера Vite выводятся только в окружении dev (или при vite.dev = true в конфиге); в остальных окружениях нужен собранный public/build/manifest.json (yarn build).

Продакшен

  • APP_ENV=prod: DI-контейнер компилируется в local/cache/di. При деплое после composer install сбросьте его до перезапуска воркеров, иначе останется контейнер от прошлой версии кода:

    php psb container:cache:clear
    php psb config:cache:clear   # если включён кеш конфигурации
  • За балансировщиком задайте APP_TRUSTED_PROXIES — иначе IP клиента и схема будут адресом и схемой балансировщика.

  • Необработанные исключения пишутся в local/logs/app.log (App\Runtime\FileLogger, по строке JSON на запись). Для ротации и каналов замените LoggerInterface в config/definitions/http.php на полноценный логгер.

  • Долгоживущий процесс (воркер очереди, RoadRunner/Swoole): после каждой задачи или запроса вызывайте $container->get(ServicesResetter::class)->reset() — сбрасывает warmup БД, identity map ORM, кеш прав и очередь cookie, состояние Inertia (share, хлебные крошки, meta, вкладки) (config/definitions/runtime.php). Для воркера phpsoftbox/queue — параметр resetState у Worker.

  • Эндпоинты профайлера (PROFILER_ENDPOINT, по умолчанию /__profiler/api/traces) регистрируются только в dev при PROFILER_ENABLED=1: они отдают трассы запросов без авторизации.

  • Хранилище трасс ограничено: PROFILER_MAX_TRACES (500) и PROFILER_MAX_AGE_SECONDS (сутки, только file); сбои сохранения трасс пишутся в лог, запрос не падает.

  • Корень local-дисков Storage без своего rootPath — local/storage (абсолютный путь из Path).

Проверки

composer test
composer cs:check