Skip to content

Contributing ​

Thanks for helping improve Campaigns.

Development setup ​

bash
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
npm ci
npm run dev          # Vite; separate terminal:
php artisan serve
php artisan queue:work
php artisan schedule:work

composer dev is the one-command runner for day-to-day development (it invokes php artisan dev); the commands above are the manual equivalent.

For anything that sends mail (SMTP connections, invitations), use a local mail catcher such as Mailpit and point MAIL_HOST / MAIL_PORT at it.

PHP 8.4, Node 22, and Composer are expected. SQLite is the default local DB.

Production self-hosting uses Docker Compose — see README.md.

Before you open a PR ​

bash
php artisan test --compact
vendor/bin/phpstan analyse --no-progress
vendor/bin/pint --dirty
npm run types:check
npm run check
  • Prefer small, focused pull requests
  • Add or update Pest tests for backend behavior changes
  • Do not commit .env, secrets, or personal OAuth credentials
  • Match existing code style (Laravel Pint / project Prettier via vp check)

AI assistants ​

Project rules for AI coding assistants live in .ai/rules/ and are committed. AGENTS.md and CLAUDE.md are gitignored: they are generated locally by php artisan boost:install (Laravel Boost, a dev dependency). Don't commit them.

Scope notes ​

Campaigns is email-campaign focused. Large new surfaces (SMS, non-email steps, AI composer, billing) should be discussed in an issue first.

Code of conduct ​

This project follows the Code of Conduct. Report security issues privately via SECURITY.md.

License ​

By contributing, you agree that your contributions are licensed under the MIT License (LICENSE).

Documentation site ​

The contributing guide above is included from CONTRIBUTING.md.

This site lives in docs-site/ (VitePress) and is published to GitHub Pages from main. It does not use the Laravel app's package.json.

bash
cd docs-site
npm ci
npm run docs:dev       # http://localhost:5173/campaigns/
npm run docs:build     # writes .vitepress/dist

Node 22. Architecture prose is included from docs/architecture.md; edit that file rather than pasting a second copy here.

Released under the MIT License.