PHPackages                             khanhartisan/laravel-backbone - 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. khanhartisan/laravel-backbone

ActiveLibrary[Framework](/categories/framework)

khanhartisan/laravel-backbone
=============================

Backbone for Laravel projects

2.0.0(1y ago)6346↓77.8%1MITPHPPHP ^8.2

Since Feb 6Pushed 1w ago2 watchersCompare

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

READMEChangelog (8)Dependencies (6)Versions (9)Used By (0)

Laravel Backbone
================

[](#laravel-backbone)

**khanhartisan/laravel-backbone** is a Laravel package that provides structured conventions and reusable building blocks for backend development. It helps you ship consistent JSON APIs, organize Eloquent side effects, handle soft-delete cascades at scale, and record high-volume counters — with minimal boilerplate.

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

[](#requirements)

DependencyVersionPHP`^8.2`Laravel`^11.0`, `^12.0`, or `^13.0`Features
--------

[](#features)

- **JsonController** — Convention-based REST API controllers with hooks for validation, transactions, query scopes, and response metadata
- **Repository** — A thin data-access layer used by JsonController, swappable per resource
- **Model Listeners** — Priority-ordered, event-scoped listeners as an alternative to monolithic model observers
- **Relation Cascade** — Application-layer, chunked cascade delete/restore for soft-deleted models
- **Counter** — Redis-backed recording with batched database persistence for high-traffic metrics
- **JsonApiTest** — One-liner CRUD feature tests for JSON API endpoints

Table of Contents
-----------------

[](#table-of-contents)

- [Installation](#installation)
- [Quick Start](#quick-start)
- [JsonController](#jsoncontroller)
    - [Setup](#setup)
    - [Routes](#routes)
    - [CRUD Endpoints](#crud-endpoints)
    - [Extension Hooks](#extension-hooks)
    - [Resource Visitors](#resource-visitors)
    - [Additional Response Data](#additional-response-data)
    - [Index: Filtering &amp; Pagination](#index-filtering--pagination)
    - [Nested Resources](#nested-resources)
    - [Authorization](#authorization)
- [Repository](#repository)
- [Model Listeners](#model-listeners)
- [Relation Cascade](#relation-cascade)
- [Counter](#counter)
    - [How It Works](#how-it-works)
    - [Recording Events](#recording-events)
    - [Querying Records](#querying-records)
    - [Examples](#counter-examples)
    - [Syncing to Application Tables](#syncing-to-application-tables)
    - [Roll-up &amp; Pruning](#roll-up--pruning)
- [Testing](#testing)
- [Artisan Commands](#artisan-commands)
- [Contributing](#contributing)

---

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

[](#installation)

Install via Composer:

```
composer require khanhartisan/laravel-backbone
```

The package auto-registers `KhanhArtisan\LaravelBackbone\BackboneServiceProvider`. No manual registration is required.

---

Quick Start
-----------

[](#quick-start)

**1. Create a controller and API resource:**

```
php artisan make:controller PostController
php artisan make:resource PostResource
```

**2. Extend `JsonController` and wire up your model:**

```
