Skip to content

Разработка ​

Изменения в код JournalPHP предлагаются через pull request в репозиторий github.com/ADamCarraway/journalphp.

Порядок работы ​

  1. Сделайте fork репозитория.
  2. Разверните локальное окружение.
  3. Создайте ветку от master:
    • feature/short-description — новая функция
    • fix/issue-123 — исправление ошибки
  4. Внесите изменения, отформатируйте код и прогоните тесты.
  5. Откройте pull request в ветку master.

Задачи и известные ошибки — в GitHub Issues. Перед началом работы над крупной задачей обсудите её в issue.

Архитектура ​

Новый код следует соглашениям проекта: Actions, репозитории с интерфейсами, сервисы и DTO. Соглашения описаны в разделе Архитектура проекта.

Стиль кода ​

PHP форматируется Laravel Pint с конфигурацией из pint.json:

bash
docker compose exec app composer pint        # отформатировать
docker compose exec app composer pint:test   # только проверить

Vue-компоненты оформляются в стиле существующего кода в resources/js/.

Тесты ​

bash
docker compose exec app php artisan test
  • Тесты находятся в tests/Unit/ и tests/Feature/
  • Новая функциональность сопровождается тестами, исправление ошибки — тестом, который её воспроизводит

GitHub Actions запускает тесты для каждого push в master и каждого pull request в master.

Требования к pull request ​

  • Фокус: один PR решает одну задачу
  • Заголовок: конкретный, например fix: reply notification is not sent to comment author
  • Связь с issue: Closes #123, если есть связанный issue
  • Описание: зачем нужно изменение и как его проверить
  • Тесты: новый код покрыт тестами, все тесты проходят
  • Стиль: composer pint:test проходит без ошибок

Зависимости ​

При перезапуске контейнеров Composer- и npm-зависимости устанавливаются автоматически, если изменились composer.lock или package-lock.json. Установить их вручную:

bash
docker compose exec app composer install
docker compose exec frontend npm install

Фоновые процессы ​

После изменений в коде задач и слушателей перезапустите воркеры очередей:

bash
docker compose exec app php artisan horizon:terminate

Состояние процессов контейнера app проверяется командами из раздела Решение проблем.

Нормы поведения ​

Участвуя в проекте, соблюдайте Нормы поведения.

Released under the MIT License.