PHPackages                             austintoddj/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. [Framework](/categories/framework)
4. /
5. austintoddj/canvas

ActiveLibrary[Framework](/categories/framework)

austintoddj/canvas
==================

A Laravel publishing platform

v7.0.0(3w ago)3.3k130.1k↓40%519[7 PRs](https://github.com/austintoddj/canvas/pulls)MITPHPPHP ^8.3CI passing

Since Mar 8Pushed 2d ago81 watchersCompare

[ Source](https://github.com/austintoddj/canvas)[ Packagist](https://packagist.org/packages/austintoddj/canvas)[ Docs](https://trycanvas.app)[ GitHub Sponsors](https://github.com/austintoddj)[ RSS](/packages/austintoddj-canvas/feed)WikiDiscussions main Synced 2w ago

READMEChangelog (10)Dependencies (34)Versions (214)Used By (0)Security (2)

 [ ![Homepage for trycanvas.app](.github/docs/readme.png) ](https://trycanvas.app)

 [![Build Status](https://github.com/austintoddj/canvas/workflows/tests/badge.svg)](https://github.com/austintoddj/canvas/actions) [![Total Downloads](https://camo.githubusercontent.com/549ab9ffca871b0bcdafd5a37f5f7f69e9f3f1fd7382a33ebfb8d34e791a6154/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f61757374696e746f64646a2f63616e766173)](https://packagist.org/packages/austintoddj/canvas) [![Latest Stable Version](https://camo.githubusercontent.com/fcaf4aa898432d48fd6e1bee5c37f68f73f4d50b3c26fd409beffb68b0835c94/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f61757374696e746f64646a2f63616e766173)](https://packagist.org/packages/austintoddj/canvas) [![License](https://camo.githubusercontent.com/545ff290a97c634835bd93b071cd4ea8009e2cc009e9e53cb3e4402bc13cb99a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f61757374696e746f64646a2f63616e766173)](https://packagist.org/packages/austintoddj/canvas)

About Canvas
------------

[](#about-canvas)

Canvas is an open-source publishing platform for [Laravel](https://laravel.com). Drop it into an existing application, use your own authentication, and start writing.

- Distraction-free editor with tags, topics, and media uploads
- Monthly trends and reader insights
- Contributor, Editor, and Admin roles
- Integrations: Unsplash, AI writing, outbound webhooks, and weekly digest
- Optional starter reader frontend via `canvas:ui`

Requirements
------------

[](#requirements)

- PHP &gt;= 8.3
- Laravel &gt;= 12
- Working authentication for the guard Canvas uses (`web` by default)

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

[](#installation)

```
composer require austintoddj/canvas
php artisan canvas:install
```

Grant admin access to an existing user:

```
php artisan canvas:make-admin your@email.com
```

Visit `/canvas`.

Optional Frontend
-----------------

[](#optional-frontend)

Use the `canvas:ui` Artisan command to publish a starter reader frontend — Blade views, a controller stub, and routes. It gets you a public blog at `/canvas-ui` without building one from scratch. Customize whatever you like!

```
php artisan canvas:ui
```

Visit `/canvas-ui`.

Upgrading
---------

[](#upgrading)

Canvas follows [Semantic Versioning](https://semver.org) and increments versions as `MAJOR.MINOR.PATCH`.

- **Major** versions may contain breaking changes — follow the [upgrade guide](.github/UPGRADE.md) for a step-by-step breakdown.
- **Minor** and **patch** versions should never contain breaking changes, so you can safely update by following the steps below.

```
composer update austintoddj/canvas
php artisan canvas:publish
```

To publish assets automatically after Composer updates, add this to your application’s `composer.json`:

```
{
    "scripts": {
        "post-update-cmd": ["@php artisan canvas:publish --ansi"]
    }
}
```

Contributing
------------

[](#contributing)

Thank you for considering contributing to Canvas! The [contribution guide can be found here](https://github.com/austintoddj/canvas/blob/main/.github/CONTRIBUTING.md).

Testing
-------

[](#testing)

```
composer test
```

License
-------

[](#license)

Canvas is open-sourced software licensed under the [MIT license](license).

###  Health Score

78

—

ExcellentBetter than 100% of packages

Maintenance98

Actively maintained with recent releases

Popularity62

Solid adoption and visibility

Community37

Small or concentrated contributor base

Maturity98

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 91.7% 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 ~20 days

Recently: every ~216 days

Total

187

Last Release

22d ago

Major Versions

v2.2.0 → v3.0.02017-01-04

v3.4.5 → v4.0.02019-02-01

v4.2.9 → v5.0.02019-12-05

v5.4.1 → v6.0.02020-09-21

v6.0.56 → v7.x-dev2026-07-01

PHP version history (10 changes)v1.0PHP &gt;=5.5.9

v2.1.4PHP &gt;=5.6.4

v4.0.0PHP ^7.1.3

v4.2.5PHP &gt;=7.0

v4.2.8PHP &gt;=7.1

v5.3.0PHP ^7.2

v6.0.0PHP ^7.3

v6.0.14PHP ^7.3|^8.0

v7.x-devPHP ^8.2

v7.0.0PHP ^8.3

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/8037011?v=4)[Todd Austin](/maintainers/austintoddj)[@austintoddj](https://github.com/austintoddj)

---

Top Contributors

[![austintoddj](https://avatars.githubusercontent.com/u/8037011?v=4)](https://github.com/austintoddj "austintoddj (3733 commits)")[![talvbansal](https://avatars.githubusercontent.com/u/7305131?v=4)](https://github.com/talvbansal "talvbansal (75 commits)")[![reliq](https://avatars.githubusercontent.com/u/2624812?v=4)](https://github.com/reliq "reliq (44 commits)")[![nticaric](https://avatars.githubusercontent.com/u/824840?v=4)](https://github.com/nticaric "nticaric (26 commits)")[![fergthh](https://avatars.githubusercontent.com/u/9524225?v=4)](https://github.com/fergthh "fergthh (22 commits)")[![foxted](https://avatars.githubusercontent.com/u/1385160?v=4)](https://github.com/foxted "foxted (16 commits)")[![albertoelias123](https://avatars.githubusercontent.com/u/41304037?v=4)](https://github.com/albertoelias123 "albertoelias123 (14 commits)")[![laravel-shift](https://avatars.githubusercontent.com/u/15991828?v=4)](https://github.com/laravel-shift "laravel-shift (12 commits)")[![Naoray](https://avatars.githubusercontent.com/u/10154100?v=4)](https://github.com/Naoray "Naoray (12 commits)")[![RDelorier](https://avatars.githubusercontent.com/u/2295675?v=4)](https://github.com/RDelorier "RDelorier (10 commits)")[![naneri](https://avatars.githubusercontent.com/u/5573469?v=4)](https://github.com/naneri "naneri (9 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (9 commits)")[![patrickadvance](https://avatars.githubusercontent.com/u/44182075?v=4)](https://github.com/patrickadvance "patrickadvance (9 commits)")[![mikemand](https://avatars.githubusercontent.com/u/745184?v=4)](https://github.com/mikemand "mikemand (8 commits)")[![lszanto](https://avatars.githubusercontent.com/u/139145?v=4)](https://github.com/lszanto "lszanto (7 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (7 commits)")[![Darival](https://avatars.githubusercontent.com/u/10416020?v=4)](https://github.com/Darival "Darival (7 commits)")[![nickbasile](https://avatars.githubusercontent.com/u/10423440?v=4)](https://github.com/nickbasile "nickbasile (6 commits)")[![hpez](https://avatars.githubusercontent.com/u/23010096?v=4)](https://github.com/hpez "hpez (6 commits)")[![Yo1L](https://avatars.githubusercontent.com/u/15970286?v=4)](https://github.com/Yo1L "Yo1L (5 commits)")

---

Tags

bloglaravelpublishinglaravelplatformblogcanvaspublishing

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

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

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

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.4M354](/packages/psalm-plugin-laravel)[aedart/athenaeum

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

265.2k](/packages/aedart-athenaeum)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9922.4M146](/packages/roots-acorn)[api-platform/laravel

API Platform support for Laravel

58190.1k21](/packages/api-platform-laravel)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

45844.8k1](/packages/pressbooks-pressbooks)[laravel/mcp

Rapidly build MCP servers for your Laravel applications.

79227.1M227](/packages/laravel-mcp)

PHPackages © 2026

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