laravel-shift/blueprint
Blueprint rapidly generates multiple Laravel components from a single, human-readable YAML “draft.” Run artisan commands like blueprint:build to scaffold models, controllers, migrations, tests, and more from one definition—ideal for quickly spinning up features and CRUD.
Start by installing Blueprint as a dev dependency: composer require -W --dev laravel-shift/blueprint. Create a blueprint.yaml (or blueprint.yml) file in your project root—this YAML file defines the components you want to generate using a concise, human-readable syntax. For your first attempt, copy the blog example from the docs: define a Post model with basic fields and a PostController with index and store actions. Run php artisan blueprint:build to see how Blueprint generates models, migrations, factories, controllers, routes, tests, and more—all from one file.
Use Blueprint early and often in your workflow:
blueprint.yaml with teammates or templates for common patterns (e.g., API-only resources, CRUD with soft deletes, policies).livewire, inertia) to generate component classes and views when building real-time or SPA-style interfaces.vendor:publish --tag=blueprint-stubs) or adding custom YAML shorthands and generators for opinionated patterns (e.g., “audit-friendly” models, custom UUID conventions).jasonmccreary/laravel-test-assertions for generated tests to pass out-of-the-box—missing this causes validation assertions to fail.git diff after running blueprint:build.blueprint:trace to debug: If generation fails silently or misbehaves, run php artisan blueprint:trace to see how Blueprint parsed your draft file—including model and controller resolution.App\Models\Post), pluralizes routes by default, and handles ULID, UUID, and geo types—but verify foreign key resolution (e.g., author_id: id:user → User model) matches your conventions.TestCase class has AdditionalAssertions imported (automatic if using Laravel’s default Pest setup).int => integer or custom types via config (blueprint.php) if using non-standard column modifiers (e.g., unsignedInteger, geoPoint).How can I help you explore Laravel packages today?