PHPackages                             ozankurt/modules-blog - 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. ozankurt/modules-blog

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

ozankurt/modules-blog
=====================

Headless blog module for Laravel with scheduled publishing, SEO, translations, and Filament admin.

v2.1.0(1mo ago)884[3 PRs](https://github.com/OzanKurt/KurtModules-Blog/pulls)MITPHPPHP ^8.4CI passing

Since Jun 19Pushed 6d agoCompare

[ Source](https://github.com/OzanKurt/KurtModules-Blog)[ Packagist](https://packagist.org/packages/ozankurt/modules-blog)[ RSS](/packages/ozankurt-modules-blog/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (10)Dependencies (37)Versions (17)Used By (0)

laravel-modules-blog
====================

[](#laravel-modules-blog)

Headless blog module for Laravel: posts, categories, tags, comments, scheduled publishing, SEO meta, translatable content, Spatie medialibrary.

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

[](#requirements)

- PHP 8.4+
- Laravel 12.x or 13.x
- `ozankurt/laravel-modules-core` v2.x

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

[](#installation)

```
composer require ozankurt/laravel-modules-blog
```

Publish config and migrations:

```
php artisan vendor:publish --tag=blog-config
php artisan vendor:publish --tag=blog-migrations
php artisan migrate
```

What it provides
----------------

[](#what-it-provides)

- `Kurt\Modules\Blog\Models\Post` — with translatable title/excerpt/body/meta\_\*, status enum (Draft/Scheduled/Published/Archived), type enum (Text/Image/Video/Carousel), scopes (`published`, `scheduled`, `drafts`, `popular`, `inCategory`, `withTags`, `authoredBy`).
- `Category`, `Tag`, `Comment` models with their relations and scopes.
- `BlogAuthor` contract + `IsBlogAuthor` trait for your User model.
- `Kurt\Modules\Blog\Support\VideoUrl::parse()` for YouTube / Vimeo / DailyMotion URL parsing.
- `Kurt\Modules\Blog\Support\SeoMetadata::forPost()` for SEO meta resolution.
- Console commands: `blog:publish-due`, `blog:upgrade-translations`, `blog:demo`.
- Domain events: `PostCreated`, `PostUpdated`, `PostPublished`, `PostArchived`, `CommentCreated`, `CommentApproved`, `CommentRejected`, ...

Filament admin
--------------

[](#filament-admin)

The package ships parallel admin resource sets for Filament **v3, v4, and v5** — `PostResource`, `CategoryResource`, `TagResource`, and `CommentResource`. The correct set is chosen at runtime from the installed Filament major, so you register a single version-dispatching plugin on your panel:

```
use Filament\Panel;
use Kurt\Modules\Blog\Filament\BlogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugin(BlogPlugin::make());
}
```

`BlogPlugin::make()` resolves to the matching `V3`/`V4`/`V5` plugin via `Kurt\Modules\Core\Support\FilamentVersion`. Install whichever Filament major your app uses — the resources require nothing beyond what the module already depends on:

```
# whichever your app runs
composer require filament/filament:"^3.0|^4.0|^5.0"
composer require filament/spatie-laravel-media-library-plugin:"^3.0|^4.0|^5.0"
```

What the resources give you:

- **Posts** — per-locale (en/tr) translatable title/excerpt/body and SEO meta; status and type enum selects; a `scheduled_for` picker shown when the status is *Scheduled* and a `video_url` field shown when the type is *Video*; category and tag relationship selects; a Spatie media-library cover upload; a table with status/type filters, badges, author, category, publish date and view count.
- **Categories** — translatable name/description, parent (tree) select, slug read-only on edit, post counts.
- **Tags** — translatable name/description with a colour picker and a colour swatch column.
- **Comments** — a moderation queue defaulting to pending, with approve/reject row actions and approve/reject/delete bulk actions.

License
-------

[](#license)

MIT (c) Ozan Kurt

###  Health Score

56

—

FairBetter than 97% of packages

Maintenance96

Actively maintained with recent releases

Popularity15

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity89

Battle-tested with a long release history

 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 ~403 days

Recently: every ~536 days

Total

10

Last Release

30d ago

Major Versions

0.4.1 → v2.0.x-dev2026-05-28

### Community

Maintainers

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

---

Top Contributors

[![OzanKurt](https://avatars.githubusercontent.com/u/8682003?v=4)](https://github.com/OzanKurt "OzanKurt (128 commits)")

---

Tags

laravelblogfilamentkurtmodules

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/ozankurt-modules-blog/health.svg)

```
[![Health](https://phpackages.com/badges/ozankurt-modules-blog/health.svg)](https://phpackages.com/packages/ozankurt-modules-blog)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.1M337](/packages/psalm-plugin-laravel)[spatie/laravel-health

Monitor the health of a Laravel application

87411.3M154](/packages/spatie-laravel-health)[laracraft-tech/laravel-useful-additions

A collection of useful Laravel additions!

58122.8k](/packages/laracraft-tech-laravel-useful-additions)[simplestats-io/laravel-client

Analytics for Laravel. Track visitors, registrations, and payments. Discover which channels actually drive revenue, not just traffic. Server-side, GDPR compliant, ad-blocker proof.

5019.3k](/packages/simplestats-io-laravel-client)[tapp/filament-form-builder

User facing form builder using Filament components

141.9k2](/packages/tapp-filament-form-builder)[outerweb/image-library

Store and link files to your models

1113.8k3](/packages/outerweb-image-library)

PHPackages © 2026

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