Files
InvoiceShelf/composer.json
T
Darko Gjorgjijoski 8fe6975a81 chore: drop laravel/boost, make AGENTS.md the source of truth (#721)
* chore: drop laravel/boost, make AGENTS.md the source of truth

The two agent files were inverted here relative to 3.x. AGENTS.md held
nothing but Laravel Boost's generated guidelines, while CLAUDE.md carried
the actual project guide — so an agent reading AGENTS.md, the file the
convention points at, got generic Laravel advice and none of the
specifics for this repository.

Boost is not used, so it goes rather than being worked around: the
dependency, the boost:update hook on post-update-cmd, the .cursor MCP
config that existed only to launch boost:mcp, and the three skill
packages it installed there.

AGENTS.md now carries the project guide and is the committed source of
truth. CLAUDE.md, GEMINI.md and .github/copilot-instructions.md become
gitignored symlinks to it, created by bin/ai-docs.php from
post-autoload-dump — the same arrangement, and the same script, as 3.x.

* chore: regenerate .phpstorm.meta.php

Removes every boost.* entry now that the package is gone. Most of the
diff is unrelated churn — the file had not been regenerated in a while,
so it also picks up drift in routes and config. Kept separate so the
boost removal stays readable.
2026-07-29 17:39:20 +02:00

107 lines
3.5 KiB
JSON

{
"name": "invoiceshelf/invoiceshelf",
"description": "Free & Open Source Invoice App for Individuals & Small Businesses. https://invoiceshelf.com",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"type": "project",
"require": {
"php": "^8.4",
"barryvdh/laravel-dompdf": "^v3.0",
"dragonmantank/cron-expression": "^v3.4",
"gotenberg/gotenberg-php": "^2.8",
"guzzlehttp/guzzle": "^7.9",
"hashids/hashids": "^5.0",
"invoiceshelf/modules": "^1.0.0",
"laravel/framework": "^13.0",
"laravel/helpers": "^1.7",
"laravel/sanctum": "^4.0",
"laravel/tinker": "^3.0",
"laravel/ui": "^4.6",
"lavary/laravel-menu": "^1.8",
"league/flysystem-aws-s3-v3": "^3.29",
"predis/predis": "^2.3",
"silber/bouncer": "^1.0.4",
"spatie/flysystem-dropbox": "^3.0",
"spatie/laravel-backup": "^10.0",
"spatie/laravel-medialibrary": "^11.11",
"symfony/mailer": "^7.3",
"symfony/mailgun-mailer": "^7.3"
},
"require-dev": {
"barryvdh/laravel-ide-helper": "^3.5",
"fakerphp/faker": "^1.23",
"jasonmccreary/laravel-test-assertions": "^2.9",
"laravel/pint": "^1.13",
"laravel/sail": "^1.41",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"pestphp/pest": "^4.0",
"pestphp/pest-plugin-faker": "^4.0",
"pestphp/pest-plugin-laravel": "^4.0",
"phpunit/phpunit": "^12.0",
"spatie/laravel-ignition": "^2.9"
},
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/",
"Modules\\": "Modules/"
},
"files": [
"app/Space/helpers.php"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"scripts": {
"ai-docs": "@php bin/ai-docs.php",
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi",
"@php bin/ai-docs.php"
],
"post-update-cmd": [
"@php artisan vendor:publish --tag=laravel-assets --ansi --force"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi",
"@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
"@php artisan migrate --graceful --ansi"
],
"dev": [
"Composer\\Config::disableProcessTimeout",
"pnpm dlx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"pnpm dev\" --names=server,queue,logs,vite"
],
"ide-helper": [
"@php artisan ide-helper:generate",
"@php artisan ide-helper:meta"
]
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,
"allow-plugins": {
"pestphp/pest-plugin": true,
"php-http/discovery": true
}
},
"minimum-stability": "stable",
"prefer-stable": true
}