Skip to main content
Back to packages
3,112 GitHub stars

laravel-shift/blueprint

View on GitHub

Description

Tool for rapidly generating multiple Laravel components from a single, human readable definition.

Blueprint comes with a set of artisan commands. The one you'll use to generate the Laravel components is the blueprint:build command:

php artisan blueprint:build

The draft file contains a definition of the components to generate. Let's review the following example draft file which generates some blog components:

models:
Post:
title: string:400
content: longtext
published_at: nullable timestamp
author_id: id:user
 
controllers:
Post:
index:
query: all
render: post.index with:posts
 
store:
validate: title, content, author_id
save: post
send: ReviewPost to:post.author.email with:post
dispatch: SyncMedia with:post
fire: NewPost with:post
flash: post.title
redirect: posts.index

From these 20 lines of YAML, Blueprint will generate all of the following Laravel components:

  • A model class for Post complete with fillable, casts, and dates properties, as well as relationships methods.
  • A migration to create the posts table.
  • A factory intelligently setting columns with fake data.
  • A controller class for PostController with index and store actions complete with code generated for each statement.
  • Routes for the PostController actions.
  • A form request of StorePostRequest validating title and content based on the Post model definition.
  • A mailable class for ReviewPost complete with a post property set through the constructor.
  • A job class for SyncMedia complete with a post property set through the constructor.
  • An event class for NewPost complete with a post property set through the constructor.
  • A Blade template of post/index.blade.php rendered by PostController@index.
  • An HTTP Test for the PostController.
  • A unit test for the StorePostRequest form request.

Note: This example assumes features within a default Laravel application such as the User model and app.blade.php layout. Otherwise, the generated tests may have failures.

Related Content on Laravel Daily

Video

Recent Courses on Laravel Daily