data-peek/apps/web
Rohith Gilla 50108c7807
fix: virtualize data tables to eliminate typing lag (#80)
* fix: virtualize data tables to eliminate typing lag in Monaco editor

- Add TanStack Virtual row virtualization for datasets > 50 rows
- Measure header column widths and sync to virtualized rows using ResizeObserver
- Fix result switching in table-preview tabs by adding key prop and using active result columns
- Reduce DOM nodes from ~15,000 to ~1,000 for 500-row datasets
- Eliminates 5+ second typing delay caused by React reconciliation overhead

Closes #71

* fix: show all query result rows instead of limiting to page size

Previously, when running raw queries (including multi-statement queries),
results were incorrectly limited to the page size (e.g., 500 rows) instead
of showing all returned rows with client-side pagination.

The issue was that table-preview tabs with multi-statement queries used
paginatedRows which slices data to pageSize before passing to the component.

Now:
- EditableDataTable is only used for single-statement table-preview tabs
- DataTable with getAllRows() is used for query tabs and multi-statement
  queries, passing all rows and letting TanStack Table handle pagination

* chore: fix dates

* chore: fix blog posts stuff

* style: Reformat SVG path definitions and MDXComponents type for improved readability.

* a11y: add ARIA attributes to virtualized table rows

- Add role="rowgroup" and aria-rowcount to virtualized container
- Add role="row" and aria-rowindex to each virtualized row
- Add role="cell" to each virtualized cell
- Enables screen readers to navigate virtualized tables correctly
2025-12-19 16:46:05 +05:30
..
drizzle feat: web updates with pro license, customer portal, and safety improvements (#24) 2025-12-03 16:44:38 +05:30
public feat: add web app 2025-11-28 20:29:49 +05:30
scripts chore: add educator license script 2025-12-11 20:17:41 +05:30
src fix: virtualize data tables to eliminate typing lag (#80) 2025-12-19 16:46:05 +05:30
.gitignore feat: add web app 2025-11-28 20:29:49 +05:30
drizzle.config.ts feat: add web app 2025-11-28 20:29:49 +05:30
eslint.config.mjs feat: add web app 2025-11-28 20:29:49 +05:30
next.config.ts feat: web updates with pro license, customer portal, and safety improvements (#24) 2025-12-03 16:44:38 +05:30
package.json fix: virtualize data tables to eliminate typing lag (#80) 2025-12-19 16:46:05 +05:30
postcss.config.mjs feat: add web app 2025-11-28 20:29:49 +05:30
README.md chore: prepare for open source release 2025-11-29 10:57:24 +05:30
tsconfig.json feat: add web app 2025-11-28 20:29:49 +05:30

data-peek Web

Marketing website and licensing portal for data-peek.

Tech Stack

  • Next.js 16 (App Router)
  • Tailwind CSS 4
  • Clerk (Authentication)
  • Drizzle ORM + PostgreSQL
  • DodoPayments (Payments)
  • Resend (Emails)

Development

# From the root directory
pnpm dev:web

# Or from this directory
pnpm dev

Open http://localhost:3000 to view the site.

Environment Variables

Copy .env.example to .env.local and fill in the values:

cp .env.example .env.local

Required variables:

  • DATABASE_URL - PostgreSQL connection string
  • CLERK_SECRET_KEY - Clerk authentication
  • NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY - Clerk public key
  • DODO_API_KEY - DodoPayments API key
  • DODO_WEBHOOK_SECRET - DodoPayments webhook secret
  • RESEND_API_KEY - Resend email API key

Deployment

The web app is designed to be deployed on Vercel.