Help Build JournalPHP
Repository: github.com/ADamCarraway/journalphp
Getting Started
- Fork the repository on GitHub
- Set up a local environment
- Create a focused branch for your change:
- New feature:
feature/my-feature - Bug fix:
fix/issue-123
- New feature:
- Make your changes and test them locally
- Open a Pull Request to the
masterbranch
Finding Tasks
Current tasks and bugs are in GitHub Issues.
Before creating a new issue, check if a similar one already exists.
Stack
| Technology | Version | Purpose |
|---|---|---|
| PHP | 8.4+ | Backend (Laravel) |
| Laravel | 13 | Framework |
| Vue | 3 | Frontend |
| Inertia.js | 2 | SPA without a separate API |
| Vite | 4+ | Frontend build |
| Tailwind CSS | 3 | Styles |
| Docker Compose | v2 | Local environment |
| PHPUnit | ^12.5 | Tests |
| Laravel Pint | — | PHP 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/pintPint 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/andtests/Unit/
Pull Request Requirements
| Requirement | Details |
|---|---|
| Focus | One PR — one change (one feature or one bug) |
| Title | Specific: fix: comment reply notification not sent when author is blocked |
| Issue | Include Closes #123 if there's a related issue |
| Description | Explain why, not just what |
| Tests | Cover new code with tests |
| Pint | Run the formatter before pushing |
Dependencies
PHP dependencies (after changing composer.json):
bash
docker compose exec app composer installFrontend dependencies (after changing package.json):
bash
docker compose exec frontend npm installBackground Processes in Development
The app container runs via Supervisor:
php artisan horizon— queue processingphp artisan reverb:start— WebSocket for notifications
Status check:
bash
docker compose exec app supervisorctl statusCode of Conduct
When contributing, follow the Community Guidelines.