Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Canvas Laravel Package

austintoddj/canvas

Canvas is a minimal, elegant publishing platform for Laravel. It adds a distraction-free writing dashboard with posts, tags, and media management, so developers can launch a fast, self-hosted blog or publication without wrestling with a heavyweight CMS.

View on GitHub
Deep Wiki
Context7

Canvas is a lightweight, Laravel-based publishing platform that gives solo writers a clean, distraction-free home for their blog. Built on familiar Laravel conventions, it installs in minutes and offers a minimal Markdown editor, elegant typography, and a simple dashboard for managing posts, tags, and topics—without the overhead of a full CMS.

  • Markdown-first writing with reading time and publish dates
  • Tags & topics for lightweight content organization
  • Scheduled publishing and weekly/monthly analytics
  • SEO-ready meta tags, sitemaps, and social share cards
  • Zero-config setup via a single Composer package
Frequently asked questions about Canvas
What is austintoddj/canvas and what does it add to a Laravel app?
Canvas is a lightweight, self-hosted publishing platform packaged as a Laravel application module, not just a thin library. It adds a blog engine with posts, tags, topics, media management, SEO metadata, an admin dashboard, routes, controllers, models, migrations prefixed canvas_, config, and publishable views and assets. It is best for a standalone editorial blog or an additive /blog section inside a conventional single-tenant Laravel app.
How do I install Canvas in a Laravel application?
Install via Composer with composer require austintoddj/canvas, then run the package publish and migration steps. Canvas ships migrations, config, and publishable views and assets, so you typically run canvas:publish and php artisan migrate. Review the published config and assets before deploying, and check the README for the exact install command sequence for your version.
Which Laravel and PHP versions does Canvas support?
The 7.x line supports modern Laravel and PHP versions, but the exact matrix is version-specific and should be confirmed against the package composer.json and release notes. The context does not state a formal support window, so pin a tested Canvas version in composer.json. Treat Laravel upgrades as requiring a Canvas compatibility check.
How does Canvas handle admin authentication and authorization?
Canvas has its own admin access expectations and needs to be reconciled with your host app user model and admin gate. You should decide which users can access the Canvas dashboard and enforce that through Laravel middleware, gates, or policies around the package routes. In many apps this means adding an admin flag or role and protecting the Canvas admin route group, and you should not assume Canvas auth automatically matches your SSO or tenancy model.
Will Canvas routes collide with my existing Laravel routes or slugs?
Yes, this is a real integration risk because Canvas registers front-end routes and can collide with existing root-level slug or catch-all patterns. For a greenfield site or an additive /blog prefix, it is usually straightforward. For an existing app with content or root-level slugs, plan route ordering, prefixes, or a custom integration before installing.
Can I use Canvas for a multi-tenant SaaS blog per customer?
Canvas is a weak fit for multi-tenant SaaS where each customer needs an isolated blog or tenant-scoped publishing. The package owns its tables and routes and assumes a conventional single-tenant Laravel monolith. Per-tenant blogs usually require forking, custom middleware, or a separate content service, so budget for configurable or fork rather than just configuration.
How do I customize Canvas views, CSS, or branding?
Canvas publishes Blade views and assets, so you can override the default design by publishing and editing those files. For small branding changes, publish the views and assets and adjust templates, CSS, and config. For deep design-system alignment or heavy localization, expect to maintain overrides or fork the package, and keep customizations in version control so you can re-check them after upgrades.
How does Canvas 7.2.3 generate post slugs and handle duplicates?
In Canvas 7.2.3, new posts derive their slug from the title instead of defaulting to post-{uuid}, which improves URL readability and SEO. The change is intended for newly created posts, not a backfill that rewrites existing slugs. You should still verify collision handling for duplicate or near-duplicate titles, empty or symbol-only titles, and non-Latin scripts via Str::slug, and check whether editors can manually override the slug in the admin UI.
What does canvas:publish overwrite, and is it safe to run on production?
canvas:publish re-publishes Canvas views and config, and it can overwrite local customizations if run without care. Before running it, diff or back up your published views and config and confirm whether your version prompts or requires --force. On production, treat it as a deployment step with review rather than a routine command, and test the publish output in staging first.
Is Canvas production-ready and what are the maintenance risks?
Canvas is low-to-moderate technical risk on code, but the dominant risk is bus factor because it is a single-maintainer package. For production, pin versions, fork to an internal namespace if the blog is business-critical, and treat the publishing surface as a bounded context with a thin internal interface. Add smoke tests for routes, slugs, and admin access, and plan a fork and upgrade cadence.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core
nodisrupt/laravel-agent
sierratecnologia/media-manager