Server-driven tables — columns, filters, and actions from the API

Storage IT ApiTables

An npm React module where the Laravel API owns the table: structure via load-table, rows via query-table — so a new admin grid is config, not another hand-coded column file.

All work
Storage IT ApiTables

Overview

ApiTables is the shared data-grid layer behind Storage IT products. I extracted the Next.js module into storage-apitables — a published package with its own docs — so every operator table is driven by the backend instead of a one-off React file. Columns, filters, sort, row actions, and bulk actions arrive as JSON; the host injects axios, design-system primitives, and feature modals.

The pipeline is two calls. load-table describes the grid. query-table returns the page of rows. Each table instance gets an isolated Redux store, so two grids on one screen do not fight over filters. Filters can sit inline in headers or in a sheet; unmapped ones overflow into a popover. Custom controls stay in the host app and register by route or action key.

The docs at apitablesdocs.bolesa.net are the unified reference for the Laravel package and the React module — backend and frontend in one place, with the mental model a team can copy instead of reverse-engineering Bolesa.

Outcomes

The capabilities that matter in a walkthrough — what a team can actually run.

  • 01The API owns the gridcolumns, filters, and actions come from load-table, not a hardcoded React column file
  • 02New admin tables ship as configdrop in ReactApiTable, point at a table name, and the host supplies buttons, toasts, and feature modals
  • 03One package, many productspublished as storage-apitables on npm so Bolesa and the next Storage IT app share the same module
  • 04Isolated Redux per tabletwo grids on one screen keep their own filters, sort, and selection
  • 05Row and bulk actions that refresh correctlyPOSTs, confirm/view modals, and custom-control routers without forking the table
  • 06Filters where operators expect theminline in headers, sheet layout, or overflow popover from the same structure payload
  • 07Host-injected UIthe app keeps its design system; the package never ships a second button language
  • 08Docs that match the codeLaravel and Next.js in one reference, from page load to rendered grid

Tell me about your product

Share a short brief — problem, timeline, and stack — and I'll reply with a candid view on fit, effort, and the fastest path to a shippable milestone.