# Records — BrandApp Playground

> Full EAV CRUD against a data grid, using the Server Component + Client Component split.

- Canonical page: https://brandapp-playground.vercel.app/eav/records
- Markdown: https://brandapp-playground.vercel.app/eav/records.md
- SDK module: `@reopt-ai/brandapp-sdk/eav`

## Architecture

1. The Server Component fetches the first entity and its initial records.
2. It passes them as initial props to the client demo, so the first paint has data.
3. The client component renders `opt-datagrid` and persists inline edits through API
   route handlers.

## API

- `eav.records.list(entityId, query?)`
- `eav.records.create(entityId, input)`
- `eav.records.update(entityId, recordId, input)`
- `eav.records.delete(entityId, recordId)`
- `where(attr).contains(value)` — search filter, built server-side in the route handler

## Related

- [Entities](https://brandapp-playground.vercel.app/eav/entities.md)
- [Filter Builder](https://brandapp-playground.vercel.app/eav/filter.md)
- [EAV Hooks](https://brandapp-playground.vercel.app/hooks/eav.md)

---

Index of every document: https://brandapp-playground.vercel.app/llms.txt
Single-file copy: https://brandapp-playground.vercel.app/llms-full.txt
HTTP API description: https://brandapp-playground.vercel.app/openapi.json
