Spreadsheet-style tables
Give your app Airtable-style tables: edit cells in place, add your own fields and formulas, link records, and save views.
Give your app Airtable-style tables: edit cells in place, add your own fields and formulas, link records, and save views.
Apps that keep lists of records, like deals, tasks, candidates or inventory, get tables that work like Airtable. The agent builds them with OneDrop’s table kit, so your app’s users get a spreadsheet-style grid and can change the table themselves, while the rest of the app (its pages, roles and logic) stays custom.
Every template asks for these tables. For your own prompt, ask for something like “lists that work like a spreadsheet, where we can add our own fields”. The agent uses the kit whenever an app has records people browse and edit.
table-attachments bucket in App Storage, up to 20 MB each./opt/onedrop/kit tables copies the kit into a Laravel app as the app’s own code (app/Tables, resources/js/components/table, a migration, config/tables.php, routes/tables.php and tests), registers App\Providers\TablesServiceProvider and installs two npm packages (@tanstack/react-virtual and @radix-ui/react-popover). Running it again keeps any file the app has changed.
Each table is a class describing the fields the app is built with, which are real database columns:
class DealsTable extends Table
{
protected string $model = Deal::class;
public function name(): string
{
return 'Deals';
}
public
Fields people add are stored in the model’s custom_fields JSON column and described in the table_fields table, so the app’s own code keeps working on its columns. A page renders the table with <DataTable data={table} />, passing Tables::get('deals')->props($request->user()). Override can() to limit who may edit, add fields or change views, and query() to limit which records someone sees.
The agent’s guide in the sandbox, /opt/onedrop/guides/tables.md, has the full field and view reference.