PHPackages                             sakibalimalik/laravel-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. sakibalimalik/laravel-blog

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

sakibalimalik/laravel-blog
==========================

A reusable blog module for Laravel applications

v1.1.9(1mo ago)027MITPHPPHP ^8.2

Since Apr 22Pushed 1mo agoCompare

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

READMEChangelogDependencies (8)Versions (14)Used By (0)

Laravel Blog Package
====================

[](#laravel-blog-package)

A reusable blog module for Laravel applications. Provides a complete blog API with posts, categories, tags, and media management out of the box.

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

[](#requirements)

- PHP 8.2+
- Laravel 11 or 12
- Laravel Sanctum (for admin route authentication)

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

[](#installation)

```
composer require sakibalimalik/laravel-blog
```

Configuration
-------------

[](#configuration)

### 1. Publish the config file

[](#1-publish-the-config-file)

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

This creates `config/blog.php` in your project:

```
return [
    'user_model'        => \App\Models\User::class, // Your User model
    'admin_middleware'  => ['auth:sanctum'],         // Middleware for admin routes
    'storage_disk'      => 'public',                 // Disk for media uploads
];
```

Update `user_model` if your User model lives in a different namespace.

### 2. Run migrations

[](#2-run-migrations)

> **Skip this step** if your project already has blog tables.

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

### 3. Register the routes

[](#3-register-the-routes)

Add this line to your `routes/api.php` (or whichever route file you use):

```
require base_path('vendor/sakibalimalik/laravel-blog/routes/blog.php');
```

### 4. Create storage symlink (if not already done)

[](#4-create-storage-symlink-if-not-already-done)

```
php artisan storage:link
```

Routes
------

[](#routes)

All routes are prefixed with whatever prefix your route file uses (e.g. `api/v1`).

### Public Routes (no authentication)

[](#public-routes-no-authentication)

MethodEndpointDescriptionGET`/blog/listing`List published postsGET`/blog/show/{slug}`Get single post by slugGET`/blog/categories`List all categoriesGET`/blog/tags`List tags with post countsGET`/blog/recent`Get recent postsPOST`/blog/views`Track a post view### Admin Routes (requires auth middleware)

[](#admin-routes-requires-auth-middleware)

#### Posts

[](#posts)

MethodEndpointDescriptionGET`/admin/blog/posts`List all postsPOST`/admin/blog/posts`Create a postGET`/admin/blog/posts/{id}`Get a postPUT`/admin/blog/posts/{id}`Update a postDELETE`/admin/blog/posts/{id}`Delete a postPOST`/admin/blog/posts/{id}/duplicate`Duplicate a postPOST`/admin/blog/posts/bulk-action`Bulk publish/unpublish/archive/deleteGET`/admin/blog/posts/statistics`Get post statistics#### Categories

[](#categories)

MethodEndpointDescriptionGET`/admin/blog/categories`List categories with treePOST`/admin/blog/categories`Create a categoryGET`/admin/blog/categories/{id}`Get a categoryPUT`/admin/blog/categories/{id}`Update a categoryDELETE`/admin/blog/categories/{id}`Delete a category#### Tags

[](#tags)

MethodEndpointDescriptionGET`/admin/blog/tags`List all tagsPOST`/admin/blog/tags`Create a tagGET`/admin/blog/tags/{id}`Get a tagPUT`/admin/blog/tags/{id}`Update a tagDELETE`/admin/blog/tags/{id}`Delete a tagGET`/admin/blog/tags/popular`Get popular tags#### Media

[](#media)

MethodEndpointDescriptionGET`/admin/blog/media`List media filesPOST`/admin/blog/media/upload`Upload a filePUT`/admin/blog/media/{id}`Update media metadataDELETE`/admin/blog/media/{id}`Delete media fileFiltering &amp; Pagination
--------------------------

[](#filtering--pagination)

All listing endpoints accept a `query` object and `pagination` object:

```
{
    "query": {
        "search": "laravel",
        "status": "published",
        "category": 1,
        "date_from": "2025-01-01",
        "date_to": "2025-12-31"
    },
    "pagination": {
        "page": 1,
        "per_page": 15
    }
}
```

### Post filters

[](#post-filters)

- `search` — searches title, content, excerpt
- `status` — `draft`, `published`, `scheduled`, `archived`
- `category` — category ID or slug
- `author` — author ID or name
- `tag` — tag ID or slug
- `date_from` / `date_to` — filter by created date
- `published_from` / `published_to` — filter by published date
- `only_trashed` — `true` to show soft-deleted posts

### Category filters

[](#category-filters)

- `search`, `parent_id`, `root_only`, `has_posts`

### Tag filters

[](#tag-filters)

- `search`, `color`, `min_posts`

### Media filters

[](#media-filters)

- `search`, `file_type`, `post_id`, `uploader`

Post Status Values
------------------

[](#post-status-values)

ValueDescription`draft`Not visible publicly`published`Live and visible`scheduled`Will go live at `published_at``archived`Hidden from publicNamespace Reference
-------------------

[](#namespace-reference)

All classes live under `SakibAliMalik\Blog\`:

```
SakibAliMalik\Blog\Models\Post
SakibAliMalik\Blog\Models\Category
SakibAliMalik\Blog\Models\Tag
SakibAliMalik\Blog\Models\Media
SakibAliMalik\Blog\Models\PostComment
SakibAliMalik\Blog\Models\PostRevision
SakibAliMalik\Blog\Models\PostView
SakibAliMalik\Blog\Enums\PostStatusEnum
SakibAliMalik\Blog\Enums\PostCommentStatusEnum
SakibAliMalik\Blog\Traits\ApiResponseTrait
SakibAliMalik\Blog\Traits\PaginationTrait
SakibAliMalik\Blog\Traits\FileUploadTrait
SakibAliMalik\Blog\Traits\CrudTrait

```

Updating
--------

[](#updating)

To pull the latest changes into any project:

```
composer update sakibalimalik/laravel-blog
```

License
-------

[](#license)

MIT

###  Health Score

43

—

FairBetter than 89% of packages

Maintenance92

Actively maintained with recent releases

Popularity9

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 83.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 ~5 days

Recently: every ~12 days

Total

12

Last Release

38d ago

PHP version history (2 changes)v1.0.0PHP ^8.2

v1.0.1PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/5acf8d39adcaf9dff44099ac178e3a91b53b34349eb9c1090ddc3333c156b30a?d=identicon)[sakibalimalik](/maintainers/sakibalimalik)

---

Top Contributors

[![sakibAcrosoft](https://avatars.githubusercontent.com/u/91083829?v=4)](https://github.com/sakibAcrosoft "sakibAcrosoft (10 commits)")[![zeeshanmushtaq786](https://avatars.githubusercontent.com/u/177517845?v=4)](https://github.com/zeeshanmushtaq786 "zeeshanmushtaq786 (2 commits)")

### Embed Badge

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

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

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.3M347](/packages/psalm-plugin-laravel)[api-platform/laravel

API Platform support for Laravel

58174.6k17](/packages/api-platform-laravel)[fleetbase/core-api

Core Framework and Resources for Fleetbase API

1235.9k21](/packages/fleetbase-core-api)[aedart/athenaeum

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

255.2k](/packages/aedart-athenaeum)

PHPackages © 2026

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