Basics
Database
Browse tables, edit rows inline, import and export CSV, manage row-level security policies, and restore backups.
The Database section is the home of your project's Postgres database. It shows the sync state between the migrations in your code and the live schema, lists every table with row counts, and opens into a full table browser, an RLS policy editor, and backups.
Schema sync and migrations
The agent manages your schema through SQL migrations in your project. The Schema Sync panel shows applied and pending migrations and whether a seed file exists. When migrations are pending, an Apply migrations button appears; Apply seed loads your seed data once.
Normally the agent applies migrations as part of its work. The manual buttons exist for when you want to apply them yourself.
The table browser
Click any table to open it. From there you can:
- Filter by any column with contains, equals, not equals, greater than, or less than.
- Edit cells inline: double-click a cell, type, and press Enter. Leaving a cell empty stores NULL.
- Add rows through a form typed per column; omitted fields fall back to the column default.
- Select and delete rows (with a confirmation, since deletes cannot be undone).
- Show or hide columns, and paginate with 25, 50, or 100 rows per page.
Edits hit your live database immediately. Tables without a primary key are read-only in the browser: cells cannot be edited and rows cannot be deleted.
CSV import and export
- Export CSV downloads the table honoring your active filter, capped at 10,000 rows.
- Import CSV accepts files up to 5 MB. Headers auto-map to columns by name, and you can remap or skip any column before importing.
- Imports insert in chunks; rows that fail type coercion are reported per line.
Row-level security policies
The RLS policies view lists every policy across your tables and lets you create, edit, and delete them. A policy has a command (ALL, SELECT, INSERT, UPDATE, DELETE), optional roles (blank means public), a USING expression, an optional WITH CHECK expression, and a permissive or restrictive mode.
Once RLS is enabled on a table, all rows stay hidden until you add a policy. If your app suddenly sees no data, a missing policy is the usual cause.
-- A typical USING expression: users see only their own rows
auth.uid() = user_idBackups and point-in-time recovery
The Backups view lists automatic backups (the first one is taken within 24 hours of provisioning). With point-in-time recovery enabled, you can rewind the whole database to any moment inside the recovery window: pick a time, click Restore to this time, and type RESTORE to confirm.
Restoring is destructive and global. Everything written after the target time is permanently lost, and the database is offline for several minutes while it rewinds.
Point-in-time recovery requires a paid database add-on. Daily automatic backups are always taken regardless.