PHPackages                             mdaushi/kinetics - 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. [Search &amp; Filtering](/categories/search)
4. /
5. mdaushi/kinetics

ActiveLibrary[Search &amp; Filtering](/categories/search)

mdaushi/kinetics
================

Zero-Friction Tables for Inertia.js — sorting, filtering, searching, and pagination through a clean composable pipeline.

v0.3.0(4w ago)1274MITPHPPHP ^8.2CI passing

Since Jun 1Pushed 4w agoCompare

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

READMEChangelog (5)Dependencies (14)Versions (6)Used By (0)

Kinetics
========

[](#kinetics)

**Zero-Friction Tables for Inertia.js**

[![Latest Version](https://camo.githubusercontent.com/bdfb2a6358a4cbeb023e515f6336837d4d5ee9eb7a92800f8649095ce349f6c2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d6461757368692f6b696e65746963732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/mdaushi/kinetics)[![npm version](https://camo.githubusercontent.com/e91a2c6e713b617b410acfa37df1dc05465a8de578a2e6f3db512cd21bd4bba3/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f406d6461757368692f6b696e65746963732d72656163742e7376673f7374796c653d666c61742d737175617265)](https://www.npmjs.com/package/@mdaushi/kinetics-react)[![Tests](https://camo.githubusercontent.com/33d64b0449155c50cea954598c37c645bac9133d8ed53ee30f423de680ba719f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6d6461757368692f6b696e65746963732f74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/mdaushi/kinetics/actions/workflows/tests.yml)[![License](https://camo.githubusercontent.com/9fe977351c91c582ea4a54bdc43eec75671a3053396ff1948ccaf2624ba2989c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6d6461757368692f6b696e65746963732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/mdaushi/kinetics)

Kinetics follows a simple philosophy: **Server-Side First, Zero-Boilerplate React**. All sorting, searching, filtering, and pagination logic runs natively through Laravel's Eloquent. The frontend is a pure renderer seamlessly integrated with Tailwind CSS and `shadcn/ui`.

[Demo](https://kinetics-demo.mdaushi.com/) · [Documentation](#documentation) · [Quick Start](#installation) · [Roadmap](#roadmap) · [Contributing](#contributing)

---

[![Kinetics Demo](./assets/kinetics-preview.gif)](./assets/kinetics-preview.gif)

---

Why Kinetics?
-------------

[](#why-kinetics)

Most datatable libraries make you duplicate logic — sorting on the client, filtering on the server, pagination somewhere in between. Kinetics has one rule: **all data logic belongs to Laravel**. The frontend receives a result and renders it. Nothing more.

```
Request → [SortPipe → SearchPipe → FilterPipe → PaginatePipe] → TableResult → JSON →

```

Features
--------

[](#features)

- **Server-side everything** — sort, search, filter, and paginate via Eloquent; no client-side data processing
- **Zero-boilerplate frontend** — one `` component renders the full UI out of the box
- **Composable pipeline** — add, remove, or replace query pipes to fit any use case
- **Action columns** — per-row buttons and dropdown groups with visibility and disabled conditions
- **TanStack Table** — full access to the underlying table instance for custom layouts
- **shadcn/ui components** — polished, accessible UI included; no separate installation needed
- **TypeScript-first** — fully typed props, hooks, and column definitions

---

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

[](#installation)

**1. Laravel package**

```
composer require mdaushi/kinetics
```

**2. React package**

```
npm install @mdaushi/kinetics-react
```

**3. Configure Tailwind CSS**

Kinetics ships Tailwind classes in its dist. Tell Tailwind to scan the package so those classes aren't purged.

**Tailwind v4**Add `@source` to `resources/css/app.css`:

```
@import "tailwindcss";

@source "../../node_modules/@mdaushi/kinetics-react/dist";
```

**Tailwind v3**Add the path to `tailwind.config.js`:

```
export default {
  content: [
    // ... existing paths
    "./node_modules/@mdaushi/kinetics-react/dist/**/*.js",
  ],
};
```

---

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

[](#quick-start)

**1. Define your table**

```
use Kinetics\Table;
use Kinetics\Columns\TextColumn;

$posts = Table::model(Post::class)
  ->columns([
    TextColumn::make('title')
      ->sortable()
      ->searchable(),
    TextColumn::make('user.name')
      ->label('Author')
      ->sortable()
      ->searchable(),
    TextColumn::make('status')
      ->badge(),
  ])
  ->make();

  return Inertia::render('posts', ['posts' => $posts]);
```

**2. Render on the frontend**

```
import { Table } from "@mdaushi/kinetics-react";

export default function Post() {
  return (

  );
}
```

---

Documentation
-------------

[](#documentation)

Kinetics features a comprehensive documentation site. It covers everything from basic installation to advanced backend APIs (Columns, Filters, Actions) and pipeline customizations.

📚 **[Read the Official Documentation](https://kinetics.mdaushi.com/)**

*(Note: To view the documentation locally, navigate to the `docs/` directory and run `pnpm install` followed by `pnpm dev`)*

---

Roadmap
-------

[](#roadmap)

- Export (CSV / XLSX) — respects active filters, skips pagination
- Bulk actions — checkbox selection + batch operations
- Column visibility toggle — persist per-user
- Saved filter presets
- Vue adapter (`@kinetics/vue`)

---

Contributing
------------

[](#contributing)

Contributions are welcome — bug fixes, new features, or documentation improvements.

### Local Setup

[](#local-setup)

```
# 1. Clone
git clone https://github.com/mdaushi/kinetics
cd kinetics

# 2. Install dependencies
composer install
pnpm install

# 3. Build packages (core first, then react)
pnpm --filter @mdaushi/kinetics-core run build
pnpm --filter @mdaushi/kinetics-react run build

# 4. Run tests
composer test

# 5. Lint
composer lint        # Check
composer lint:fix    # Fix
```

### Project Structure

[](#project-structure)

```
kinetics/
├── src/                     # Laravel package
│   ├── Table.php            # Main entry point
│   ├── Columns/             # Column, ActionColumn
│   ├── Actions/             # Action, ActionGroup
│   ├── Pipes/               # Query pipeline stages
│   ├── Resources/           # TableResult (response formatter)
│   └── Support/             # TableConfig, TableContext
├── packages/
│   ├── core/                # @mdaushi/kinetics-core
│   └── react/               # @mdaushi/kinetics-react
│       └── src/
│           ├── components/  # , ActionCell, Toolbar, Pagination
│           └── hooks/       # useTable
├── tests/                   # PHPUnit test suite
└── docs/                    # Documentation

```

### Guidelines

[](#guidelines)

- **PHP** — PSR-12 style. Add PHPUnit tests for any new feature or fix under `tests/`.
- **React/TS** — keep components headless-friendly; UI logic belongs in `hooks/`, not in components.
- **New pipe** — implement `PipeInterface`, add to `src/Pipes/`, document in `docs/laravel-backend.md`.
- **Commits** — use [Conventional Commits](https://www.conventionalcommits.org/) (`feat:`, `fix:`, `docs:`, `chore:`).

[Open an issue](https://github.com/mdaushi/kinetics/issues) for bugs or feature requests.

---

### Reporting Issues

[](#reporting-issues)

Please [open an issue](https://github.com/mdaushi/kinetics/issues) with a clear description and, where possible, a minimal reproduction.

###  Health Score

42

—

FairBetter than 88% of packages

Maintenance94

Actively maintained with recent releases

Popularity18

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity40

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

5

Last Release

29d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/51962685?v=4)[Muhammad Firdaus](/maintainers/mdaushi)[@mdaushi](https://github.com/mdaushi)

---

Top Contributors

[![mdaushi](https://avatars.githubusercontent.com/u/51962685?v=4)](https://github.com/mdaushi "mdaushi (61 commits)")

---

Tags

datatableinertiajslaravelshadcntabletanstack-tablelaravelinertiareactdatatabledata tableinertiajsshadcnserver-sidetanstack-table

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/mdaushi-kinetics/health.svg)

```
[![Health](https://phpackages.com/badges/mdaushi-kinetics/health.svg)](https://phpackages.com/packages/mdaushi-kinetics)
```

###  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)[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.5k30.2M151](/packages/laravel-cashier)[laravel/scout

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

1.7k55.0M632](/packages/laravel-scout)[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.

45444.2k1](/packages/pressbooks-pressbooks)[yajra/laravel-oci8

Oracle DB driver for Laravel via OCI8

8793.2M25](/packages/yajra-laravel-oci8)

PHPackages © 2026

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