reopt designreopt design
DocsExploreToolsPricingBuilder
Login
Explore/
opt-ui165opt-charts33opt-datagrid6opt-editor5opt-calendar4opt-filemanager4opt-chat6opt-shell14brandapp-ui8Examples12Builder Blocks
reopt designreopt design

A design system for the AI era

  • Docs
  • Pricing
  • Releases
  • GitHub
  • Terms of Service
  • Privacy Policy

reopt Inc.Business registration no. 217-88-02453contact@reopt.ai

© 2026 reopt Inc. All rights reserved.

Explore/opt-datagrid/Campaign Base App
Appopt-datagrid example

Campaign Base App

Editable campaign base with grouped columns, saved field layouts, selected-record activity, owner automation rules, formula recompute, visible approval sweeps, and BrandApp EAV sync.

appbaseactivityautomationformulaeavbrandapp-sdk
bun add @reopt-ai/opt-datagrid @reopt-ai/brandapp-sdk
DataGridDataGridColumnDataGridCommitContextcreateReoptEavClient
1024px

Growth OS

BrandApp EAV base

Saved views

0

Save a filtered layout for repeat sync work.

Approved records50%
syncedentity: campaigns · 2 min ago

Campaign base workspace

Ready for spreadsheet-style editing.6 visible · 6 total
Brief
Team
#
1
Spring collection launch
Ready
Mina Park
Email
2
Referral reminder
Draft
Eric Han
Push
3
VIP early access
Blocked
Jisoo Kim
Sales
4
Trial nurture sequence
Live
Hana Lee
Email
5
Homepage promo panel
Idea
Mina Park
Web
6
Winback offer
Ready
Noah Choi
Email
+
Add campaign record

Selected record

Spring collection launch

Ready

Owner

MPMina Park

Channel

Email

Launch date

2026-04-02

Budget

$12,800

ROI

2.8x

Priority

93

Record activity

1 notes

BrandApp AI

5 min ago

Audience query, owner, and approval flag are ready for EAV sync.

Automations

ready
Write 3 visible approved rows to EAV
Assign owner on status change
Recompute priority formula

Field schema

9/9 shown

BrandApp sync

2 min ago

Approved campaign rows

3 records wrote to BrandApp EAV 2 min ago

Schema check

campaigns entity matched local field map

// app/api/campaign-base/route.ts
import { createReoptEavClient } from "@reopt-ai/brandapp-sdk/eav";

let eav: ReturnType<typeof createReoptEavClient> | undefined;

function getEav() {
  eav ??= createReoptEavClient({
    clientId: process.env.BRANDAPP_CLIENT_ID!,
    clientSecret: process.env.BRANDAPP_CLIENT_SECRET!,
    brandappId: process.env.BRANDAPP_ID!,
  });
  return eav;
}

export async function PATCH(req: Request) {
  const { entityId, edits } = await req.json();
  const eav = getEav();
  const results = await Promise.all(
    edits.map((edit) =>
      eav.records(entityId).update(edit.recordId, { values: edit.values }),
    ),
  );
  return Response.json({ rows: results });
}

Related Examples

opt-datagrid

Editable Grid

opt-datagrid - Starter

Examples
DataGridDataGridColumn+1
opt-datagrid

Journal Ledger

opt-datagrid - Edit

Examples
DataGridDataGridColumn+4
opt-datagrid

Ops Monitor

opt-datagrid - Monitor

Examples
DataGridDataGridColumn
NextEditable Grid