PHPackages                             orchestra/canvas - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. orchestra/canvas

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

orchestra/canvas
================

Code Generators for Laravel Applications and Packages

v11.0.1(2mo ago)20917.2M—1.5%13[1 PRs](https://github.com/orchestral/canvas/pulls)20MITPHPPHP ^8.3CI passing

Since Jan 3Pushed 5d ago2 watchersCompare

[ Source](https://github.com/orchestral/canvas)[ Packagist](https://packagist.org/packages/orchestra/canvas)[ RSS](/packages/orchestra-canvas/feed)WikiDiscussions 11.x Synced 1mo ago

READMEChangelog (10)Dependencies (32)Versions (129)Used By (20)

Code Generators for Laravel Applications and Packages
=====================================================

[](#code-generators-for-laravel-applications-and-packages)

**Canvas** replicates all of the `make` artisan commands available in your basic Laravel application. It allows everyone to use it:

- outside of Laravel installation such as when building Laravel packages.
- with Laravel by allowing a few customizations to the stub resolved class and namespace.

[![tests](https://github.com/orchestral/canvas/actions/workflows/tests.yaml/badge.svg?branch=10.x)](https://github.com/orchestral/canvas/actions/workflows/tests.yaml)[![Latest Stable Version](https://camo.githubusercontent.com/4ecd3e73f6e25ecae14eaa68d890a2889da93b1ccf3ca86c8f91f1393a888adb/68747470733a2f2f706f7365722e707567782e6f72672f6f72636865737472612f63616e7661732f762f737461626c65)](https://packagist.org/packages/orchestra/canvas)[![Total Downloads](https://camo.githubusercontent.com/7cd69bc73c2e8c1d6b9ef1f37a61f480c0ebd2a8d5230fd939d29df05cbd2167/68747470733a2f2f706f7365722e707567782e6f72672f6f72636865737472612f63616e7661732f646f776e6c6f616473)](https://packagist.org/packages/orchestra/canvas)[![Latest Unstable Version](https://camo.githubusercontent.com/8afe5554569e0780b909a1d424820f44e71f314b15105fafebbf66240b6044b3/68747470733a2f2f706f7365722e707567782e6f72672f6f72636865737472612f63616e7661732f762f756e737461626c65)](https://packagist.org/packages/orchestra/canvas)[![License](https://camo.githubusercontent.com/6c293fd83211d06ad42d31410d18c829bee68d204ba75a925db9b9b500e4a511/68747470733a2f2f706f7365722e707567782e6f72672f6f72636865737472612f63616e7661732f6c6963656e7365)](https://packagist.org/packages/orchestra/canvas)[![Coverage Status](https://camo.githubusercontent.com/83c0038470435f11a99931814bd3ec1995733cba6d2c0fd2c1d45e8393587690/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f6f72636865737472616c2f63616e7661732f62616467652e7376673f6272616e63683d31302e78)](https://coveralls.io/github/orchestral/canvas?branch=10.x)

Installation
------------

[](#installation)

To install through composer, run the following command from the terminal:

```
composer require --dev "orchestra/canvas"

```

Usages
------

[](#usages)

As a Laravel developer, you should be familiar with the following commands:

Command.Description`make:channel`Create a new channel class`make:command`Create a new Artisan command`make:controller`Create a new controller class`make:event`Create a new event class`make:exception`Create a new custom exception class`make:factory`Create a new model factory`make:job`Create a new job class`make:listener`Create a new event listener class`make:mail`Create a new email class`make:middleware`Create a new middleware class`make:migration`Create a new migration file`make:model`Create a new Eloquent model class`make:notification`Create a new notification class`make:observer`Create a new observer class`make:policy`Create a new policy class`make:provider`Create a new service provider class`make:request`Create a new form request class`make:resource`Create a new resource`make:rule`Create a new validation rule`make:seeder`Create a new seeder class`make:test`Create a new test classWhich can be executed via:

```
php artisan make:migration CreatePostsTable --create

```

With **Canvas**, you can run the equivalent command via:

```
vendor/bin/canvas make:migration CreatePostsTable --create

```

### `canvas.yaml` Preset file

[](#canvasyaml-preset-file)

To get started you can first create `canvas.yaml` in the root directory of your Laravel project or package.

#### Laravel preset

[](#laravel-preset)

You can run the following command to create the file:

```
vendor/bin/canvas preset laravel

```

Which will output the following as `canvas.yaml`:

```
preset: laravel

namespace: App

model:
  namespace: App
```

#### Package preset

[](#package-preset)

You can run the following command to create the file:

```
vendor/bin/canvas preset package

```

Which will output the following as `canvas.yaml`:

```
preset: package

namespace: PackageName
user-auth-provider: App\User

paths:
  src: src
  resource: resources

factory:
  path: database/factories

migration:
  path: database/migrations
  prefix: ''

console:
  namespace: PackageName\Console

model:
  namespace: PackageName

provider:
  namespace: PackageName

testing:
  namespace: PackageName\Tests
```

> You need to change `PackageName` to the root namespace for your package.

Alternatively, you can set `--namespace` option to ensure the namespace is used in the file:

```
vendor/bin/canvas preset package --namespace="Foo\Bar"

```

```
preset: package

namespace: Foo\Bar
user-auth-provider: App\User

paths:
  src: src
  resource: resources

factory:
  path: database/factories

migration:
  path: database/migrations
  prefix: ''

console:
  namespace: Foo\Bar\Console

model:
  namespace: Foo\Bar

provider:
  namespace: Foo\Bar

testing:
  namespace: Foo\Bar\Tests
```

### Integration with Laravel

[](#integration-with-laravel)

By default, you can always use `composer exec canvas` for Laravel and Packages environment. However, with the Package Discovery `Orchestra\Canvas\LaravelServiceProvider` will be installed automatically and override all default `make` commands available via artisan so you can use it without changing anything.

###  Health Score

75

—

ExcellentBetter than 100% of packages

Maintenance94

Actively maintained with recent releases

Popularity65

Solid adoption and visibility

Community34

Small or concentrated contributor base

Maturity90

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 99.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~18 days

Recently: every ~2 days

Total

127

Last Release

55d ago

Major Versions

v8.12.0 → v9.2.02024-11-30

v9.2.1 → v10.0.12025-02-15

v9.2.2 → v10.0.22025-04-05

9.x-dev → v10.1.02025-11-13

v10.1.1 → 12.x-dev2026-03-06

PHP version history (10 changes)v6.0.0PHP &gt;=7.3

4.6.0PHP &gt;=7.2 || &gt;=8.0

5.5.0PHP &gt;=7.2.5 || &gt;=8.0

6.1.0PHP &gt;=7.3 || &gt;=8.0

v6.1.4PHP ^7.3 || ^8.0

v7.0.0PHP ^8.0

v8.0.0PHP ^8.1

v9.0.0PHP ^8.2

12.x-devPHP ^8.4

v11.0.0PHP ^8.3

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/172966?v=4)[Mior Muhammad Zaki](/maintainers/crynobone)[@crynobone](https://github.com/crynobone)

---

Top Contributors

[![crynobone](https://avatars.githubusercontent.com/u/172966?v=4)](https://github.com/crynobone "crynobone (836 commits)")[![edersoares](https://avatars.githubusercontent.com/u/957395?v=4)](https://github.com/edersoares "edersoares (3 commits)")[![blhylton](https://avatars.githubusercontent.com/u/1297591?v=4)](https://github.com/blhylton "blhylton (2 commits)")[![therobfonz](https://avatars.githubusercontent.com/u/35386780?v=4)](https://github.com/therobfonz "therobfonz (1 commits)")

---

Tags

generatorlaravellaravel-packagescafolding

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/orchestra-canvas/health.svg)

```
[![Health](https://phpackages.com/badges/orchestra-canvas/health.svg)](https://phpackages.com/packages/orchestra-canvas)
```

###  Alternatives

[barryvdh/laravel-ide-helper

Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.

14.9k123.0M687](/packages/barryvdh-laravel-ide-helper)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)[flarum/core

Delightfully simple forum software.

211.3M1.9k](/packages/flarum-core)[orchestra/canvas-core

Code Generators Builder for Laravel Applications and Packages

1717.2M7](/packages/orchestra-canvas-core)[tehwave/laravel-achievements

Simple, elegant Achievements the Laravel way

7012.8k](/packages/tehwave-laravel-achievements)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
