Turn any Supabase project into a complete admin platform
Supasheet reads your Postgres schema and renders a full internal tool — auto-CRUD, dashboards, charts, reports, RBAC, audit logs, and collaboration. No code per table.
Your database is the source of truth - including the UI.
Define a table, annotate it with a JSON comment, and Supasheet generates the forms, list views, filters, and detail pages. Change the schema, change the UI.
- Schema-drivenPostgres types, defaults, and check constraints flow straight into the UI.
- Metadata, not configForm layout lives in a JSON comment on the table - no extra config files.
- No regenerate stepNew columns appear immediately. Migrations are your release pipeline.
create table crm.deals (
id uuid primary key default gen_random_uuid(),
name text not null,
amount numeric(12,2),
stage crm.deal_stage not null default 'lead',
close_date date,
owner_id uuid references auth.users
);
comment on table crm.deals is '{
"sections": [
{ "title": "Deal", "icon": "Briefcase",
"items": ["name","amount","stage"] },
{ "title": "Timeline", "icon": "Calendar",
"items": ["close_date","owner_id"] }
]
}';Every table is a finished form.
Supasheet introspects your columns, types, defaults, and check constraints to render a complete create/update form - sectioned layouts, foreign-key pickers, Zod validation that mirrors the database. Zero frontend code per table.
- · JSON in a `COMMENT ON TABLE` drives sections, icons, and field order.
- · Foreign keys become searchable async-loaded pickers automatically.
- · Constraints become inline validation - errors surface before round-trip.
Strongly-typed inputs from Postgres domains.
Type a column as `supasheet.RATING` and get a star input. Type it as `supasheet.COLOR` and get a colour picker. The right component renders automatically - constraints live in the database, not the form code.
The same data, however your users prefer to see it.
Every table gets six interchangeable views. The Grid is a spreadsheet of cells you edit in place. Pick a date column for a Calendar, an enum for Kanban, or a parent_id for a Tree.
A per-schema dashboard, composed from SQL views.
Mark a Postgres view as `dashboard_widget` in its comment and it appears as a tile on the schema dashboard - KPI cards, sparklines, full charts, all permission-scoped to the user's role. No widget builder, no drag-and-drop, no JSON config beyond the view comment.
Recharts, from a Postgres view.
Write a view that returns the shape Recharts expects, add a `chart` hint to the comment, and Supasheet renders an interactive chart with axis controls, legend toggling, and series colours. Five chart types out of the box.
Any view is a runnable, exportable report.
Tag a Postgres view as `report` and it appears in the Reports section with CSV and JSON export, full filter/sort/pagination, and permissions inherited from the underlying view. No separate report definition language.
| name | amount | stage | owner | close_date |
|---|---|---|---|---|
| Acme Corp renewal | $48,000 | Negotiation | Lena P. | Jun 04 |
| Globex Pilot | $12,500 | Discovery | Rohan S. | May 28 |
| Initech Expansion | $96,200 | Proposal | Mei C. | Jul 12 |
| Hooli Lighthouse | $185,000 | Negotiation | Lena P. | Jun 18 |
| Pied Piper Q3 | $24,000 | Won | Asha D. | May 02 |
| Soylent SaaS | $7,400 | Discovery | Mei C. | Jul 30 |
Typed permissions, enforced by RLS.
100+ typed permissions are first-class Postgres enums. Every UI action checks them client-side; every query is enforced server-side by Row Level Security. Two layers, one source of truth.
Immutable history for every audited table.
Drop an `audit_trigger()` on a table and every insert, update, and delete is logged with the user, role, operation, old data, new data, and changed fields. Built for SOX, HIPAA, GDPR.
A full bucket browser, permissioned by the same RBAC.
Browse, upload, rename, move, and preview files across Supabase Storage buckets - public, per-user private, or schema-scoped, each enforced by RLS policies that mirror your existing table permissions.
- acme-corp—May 18, 2026 · 10:24
- globex-pilot—May 16, 2026 · 09:11
- acme-contract-v3.pdf124 KBMay 14, 2026 · 16:02
- discovery-call.mp418.4 MBMay 12, 2026 · 11:48
- logo-acme.svg14 KBMay 10, 2026 · 08:33
- pricing-2026.xlsx88 KBMay 09, 2026 · 14:21
- requirements.md6 KBMay 06, 2026 · 09:02
A single comment thread per record.
Users with the `<schema>.<table>:comment` permission can post comments on individual records. One flat, chronological thread per record - no nested replies. Stored in `supasheet.comments`, rendered inline in the detail view, gated by the same RBAC as the data.
- · Scoped to schema, table, and record id - portable across resources.
- · Permission-gated by the same RBAC that gates row access.
- · Real-time updates via TanStack Query invalidations.
Moved to negotiation - legal is reviewing the redlines today. Owner change rolled to @mei.
Pulled the latest contract version into /contracts/acme-2026.pdf.
Heads up: stakeholder ask shifted the close date by a week. Updated the record.
Building blocks that ship with every install.
Features that live inside the screens above as toolbars, dialogs, dropdowns, and admin pages - not destinations of their own. Tap any tile for the full breakdown.
Saved filters
Save filter, sort, and column presets per resource. Share them with the team.
Bulk import
Map CSV columns to your table, resolve foreign keys by lookup, and import in one pass.
Notifications
Fanout notifications with read/unread state per user.
Authentication & MFA
Magic link, OAuth, and TOTP MFA wired into every Supasheet app.
Templates
Pre-built example schemas for CRM, HR, finance, inventory, and more.
Multi-schema architecture
Each Postgres schema becomes a separate, permission-scoped app module.
One Supabase project. As many apps as you have schemas.
Each Postgres schema becomes its own app inside Supasheet — its own dashboard, its own tables, its own permissions, its own audit trail. Switch between CRM, HR, and Finance from a single workspace, all powered by the same database.
- A schema is an appGroup related tables into a schema; Supasheet treats it as a self-contained module with its own routes.
- Isolated by RLSEach schema can have its own roles and policies — finance data never leaks into the CRM module.
- Shared meta layerUsers, roles, comments, and audit logs live in one place. Add a new module without re-doing auth.
- CRMcrm12 tables
- HRhr18 tables
- Financefinance22 tables
- Inventoryinventory14 tables
- Manufacturingmanufacturing19 tables
- Hostelhostel9 tables
From CRM to manufacturing - start from a template.
Twelve real-world example schemas you can install in one click and edit in SQL. Each ships as a single migration with tables, views, seed data, and example dashboards. Or bring your own - Supasheet works with any Postgres schema.
Ship your internal tool this week.
Connect Supabase, install the Supasheet schema, design dashboards in minutes. Your data never leaves your project.