GSAB
Live demo · Experimental

A team directory, running on a spreadsheet

This table's database is a public Google Sheet. Your browser reads it directly with the gsab JS client — no auth, no API key — and polls for changes, so edits made by anyone (including directly in the sheet) show up here within a few seconds. Writes go through this site's server using the same library in Node. It's a shared toy: capped at 30 rows, rate-limited, and reset periodically.

live from Google Sheetsopen the actual sheet ↗

Reading the sheet…

What this page actually runs

TeamDirectory.jsx
// in your browser — no auth, it's a public sheet
import { connect } from "gsab-js";
import { useSheet } from "gsab-js/react";

const db = connect("<sheet url or id>").sheet();
const { rows, loading, error } = useSheet(db, { key: "id" });

// on the server — writes need a Google sign-in
import { refreshTokenAuth } from "gsab-js/node";
const db = connect({ spreadsheetId, auth: refreshTokenAuth() }).sheet(schema);
await db.insert({ id: 5, name: "You", email: "you@example.com" });

Try it yourself: npm install gsab-js npm · GitHub. Early (0.2.x) and moving fast. The Python library it mirrors is on PyPI.