PHPackages                             aristonis/laravel-blog-manager - 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. [Image &amp; Media](/categories/media)
4. /
5. aristonis/laravel-blog-manager

ActiveLibrary[Image &amp; Media](/categories/media)

aristonis/laravel-blog-manager
==============================

Backend Laravel package to manage blog posts as ordered content blocks (text + media) with a pluggable, contracts-first media layer.

1.0.1.1(1mo ago)14↓66.7%MITPHPPHP ^8.2CI passing

Since Jul 18Pushed 1mo agoCompare

[ Source](https://github.com/aristonis/laravel-blog-manager)[ Packagist](https://packagist.org/packages/aristonis/laravel-blog-manager)[ RSS](/packages/aristonis-laravel-blog-manager/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (20)Versions (3)Used By (0)

laravel-blog-manager
====================

[](#laravel-blog-manager)

A backend Laravel package for managing blog posts as **ordered content blocks** — interleaving text and media (images, videos, files) in the exact authored order — with a **pluggable, contracts-first media layer** and **pluggable authorization**. It is a **core-only backend by design** (no frontend, no HTTP layer): your app owns the UI **and the transport** — drive the package through the `BlogManager` facade / services and wire your own controllers or API over them.

> Status: **v1.0.** Supports Laravel 12 and 13 on PHP ^8.2. Core-only — no HTTP layer; drive it through the `BlogManager` facade.

Install
-------

[](#install)

```
composer require aristonis/laravel-blog-manager
php artisan vendor:publish --tag=blog-manager-config
```

The service provider is auto-discovered. See the **[Getting started guide](https://aristonis.org/open-source/laravel-blog-manager/docs)**.

Documentation — two audiences
-----------------------------

[](#documentation--two-audiences)

- **For developers → [documentation site](https://aristonis.org/open-source/laravel-blog-manager/docs)** — human guides: getting started, usage, configuration, architecture, extending, error codes, events.
- **For AI agents → [Laravel Boost](https://laravel.com/docs/boost)** — this package ships Boost guidelines and skills in [`resources/boost/`](resources/boost/) that describe how to *use and extend* it correctly. Install Boost in your app and run `php artisan boost:install` (or `boost:update --discover`); your coding agent then auto-loads the always-on guideline plus the on-demand `blog-manager-*` skills.

What it does
------------

[](#what-it-does)

- Posts composed of ordered, typed blocks: **Heading · Paragraph · Image · Video · File**.
- **Publishing lifecycle:** draft / published, with **scheduling** (a future publish date) — computed, no cron.
- **Revisions:** append-only snapshots of a post (auto on publish + manual) with **non-destructive restore** — re-upload flow for media deleted since the snapshot. No diff engine, no autosave.
- **Taxonomy:** classify posts with **categories** (curated, unique) and **tags** (free-form, auto-created), and read posts by term. Flat in v0.4 (nesting deferred). Guarded by `blog.taxonomy.manage`.
- **SEO metadata:** per-post meta/OpenGraph overrides + a pure **resolver** that returns a flat, typed meta-bag (`ResolvedSeo`) with fallbacks (post title, first-paragraph excerpt, config `og:type`). The package emits **no tags** — you serialize the DTO into `` in your own view.
- Paragraph text stored as `plain`/`markdown`, rendered to **sanitized HTML**. Every block is served as a **`{ source, payload }`** pair (raw data + rendered output) so any frontend can re-theme.
- **Media Manager** with a swappable storage adapter (default: Laravel filesystem) — register your own (e.g. `spatie/laravel-medialibrary`) without touching the core.
- **Any binary source (`MediaSource`):** ingest media from a filesystem path or an open stream — not only an HTTP `UploadedFile` — via `storeSource(MediaSource)`; the one-line `store(UploadedFile)` path stays for the common case. The caller owns/closes any supplied stream.
- **Configurable author key type:** match the host `User` primary key — `author_key_type` ∈ `bigint` (default) · `uuid` · `ulid`, declared once and applied to both author columns, with no DB foreign key.
- **Pluggable authorization** (default allow-all; `gate` or a custom driver) — the package defines ability keys, never roles/permissions. Enforce in your transport, or inside the services via `enforce_in_services`.
- **Core-only, no HTTP layer** — the host owns its transport and API contract. Numbered-code exceptions and after-commit domain events are the integration surface for host code.

License
-------

[](#license)

MIT. See [LICENSE](LICENSE).

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance91

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~6 days

Total

2

Last Release

43d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ace2a79e55101edcf9b32d4436ae884500813528c6271e1db242324785d83cbf?d=identicon)[mekadalibrahem](/maintainers/mekadalibrahem)

---

Top Contributors

[![mekadalibrahem](https://avatars.githubusercontent.com/u/261486113?v=4)](https://github.com/mekadalibrahem "mekadalibrahem (90 commits)")

---

Tags

blogcmscontent-blockslaravellaravel-packagemediaphplaravelpackagemediacmsblogContent Blocks

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/aristonis-laravel-blog-manager/health.svg)

```
[![Health](https://phpackages.com/badges/aristonis-laravel-blog-manager/health.svg)](https://phpackages.com/packages/aristonis-laravel-blog-manager)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3365.5M359](/packages/psalm-plugin-laravel)[laravel/ai

The official AI SDK for Laravel.

1.1k6.4M360](/packages/laravel-ai)[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.

45945.2k1](/packages/pressbooks-pressbooks)[laravel/scout

Laravel Scout provides a driver based solution to searching your Eloquent models.

1.7k59.5M714](/packages/laravel-scout)[illuminate/queue

The Illuminate Queue package.

20433.5M1.9k](/packages/illuminate-queue)[api-platform/laravel

API Platform support for Laravel

58190.1k22](/packages/api-platform-laravel)

PHPackages © 2026

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