Skip to content

Help Build JournalPHP

Repository: github.com/ADamCarraway/journalphp

Getting Started

  1. Fork the repository on GitHub
  2. Set up a local environment
  3. Create a focused branch for your change:
    • New feature: feature/my-feature
    • Bug fix: fix/issue-123
  4. Make your changes and test them locally
  5. Open a Pull Request to the master branch

Finding Tasks

Current tasks and bugs are in GitHub Issues.

Before creating a new issue, check if a similar one already exists.

Stack

TechnologyVersionPurpose
PHP8.4+Backend (Laravel)
Laravel13Framework
Vue3Frontend
Inertia.js2SPA without a separate API
Vite4+Frontend build
Tailwind CSS3Styles
Docker Composev2Local environment
PHPUnit^12.5Tests
Laravel PintPHP code formatting

Architecture

Before working with the code, read Architecture Overview. The project uses Actions, Repositories, Services, and DTOs — understanding the structure helps avoid common contribution mistakes.

PHP Formatting

Run Pint before committing:

bash
docker compose exec app ./vendor/bin/pint

Pint enforces the Laravel coding style.

Frontend Style

Follow the style of existing Vue components in resources/js/. No additional linter is enforced — consistency is key.

Tests

bash
docker compose exec app php artisan test
  • New feature → add a Feature test
  • Bug fix → add a test that reproduces the issue
  • Tests are in tests/Feature/ and tests/Unit/

Pull Request Requirements

RequirementDetails
FocusOne PR — one change (one feature or one bug)
TitleSpecific: fix: comment reply notification not sent when author is blocked
IssueInclude Closes #123 if there's a related issue
DescriptionExplain why, not just what
TestsCover new code with tests
PintRun the formatter before pushing

Dependencies

PHP dependencies (after changing composer.json):

bash
docker compose exec app composer install

Frontend dependencies (after changing package.json):

bash
docker compose exec frontend npm install

Background Processes in Development

The app container runs via Supervisor:

  • php artisan horizon — queue processing
  • php artisan reverb:start — WebSocket for notifications

Status check:

bash
docker compose exec app supervisorctl status

Code of Conduct

When contributing, follow the Community Guidelines.

Released under the MIT License.