Directus-style for Postgres, zero setup

A CMS UI for your existing Postgres database.

PostgresCMS is a UI layer on top of your current Postgres. Browse tables and view/edit records like a CMS with better inputs for real-world fields. No metadata tables, no schema changes.

Free forever|No metadata tables
Directus-style, but serverless
Next.js on Vercel with no long-running backend. Everything caches in your browser.
Rich editing
Markdown with images, JSON pretty views, booleans as toggles, dates/timestamps with pickers.
Safe for your database
We never create metadata tables. Only writes you explicitly trigger (create, edit, delete) touch Postgres.
Free forever
We built this for ourselves and share it. No SaaS tax, no onboarding fees.
Target Audience

Who is this for?

Postgres-first builders who want a CMS UI without another SaaS bill or complex setup.

Indie Hackers

Manage content or configs directly in Postgres with a nicer UI.

Developers

Get a Directus-like UI without hosting a stateful backend.

Purists

Refuse to let a CMS create tables or schemas in production.

How it works

Three quick steps to get started. No backend setup required.

1
Welcome
Enter a Postgres connection string + OpenRouter key. Secrets are saved to local PGlite only.
2
Bootstrap
We introspect pg_catalog and issue one OpenRouter request per table to derive UI metadata.
3
CMS
Browse tables, switch views, edit records with rich inputs, and navigate relationships.
Workflows supported
Everything you can do today.
  • Browse every table discovered from pg_catalog with human-friendly labels derived by AI.
  • Switch between table view and card grid view with per-table preferences and server-side sorting.
  • Open a record detail page, edit fields, or delete with confirmation.
  • Create records with validation, defaults, boolean toggles, date/time pickers, markdown editor, and JSON input.
  • Follow relationships: see references, jump to related records, and browse incoming/outgoing links.
  • Regenerate schema + metadata with a single resync (max concurrency 10 OpenRouter calls, bails on first failure).
  • Adjust connection settings or clear local cache from the Settings screen.
Field renderers
How Postgres columns map to UI components.

text / varchar

text or textarea based on length hints

integer / numeric

number or currency

boolean

toggle switch

timestamp / date

date or datetime pickers

jsonb

JSON editor/pretty view

markdown

markdown editor with image uploads

enum

enum dropdowns

foreign keys

relation renderers

OpenRouter helps choose the right renderer when column names imply intent (e.g., "blog_content" maps to markdown, "price_cents" maps to currency). Results are cached locally.

Why we need your OpenRouter key

Postgres only tells us column names, types, and relationships. To render better UIs, we ask OpenRouter (one request per table) to infer intent from names and schema context.

Your key is stored in PGlite locally and used directly from the browser. We cache responses so you are not billed twice for the same table.

Pricing

Free, forever.

PostgresCMS is an internal tool we rely on for our own projects. We keep it free and stateless so you can get value without contracts or seats.

Who maintains PostgresCMS?

A small UK-based team, building and using it ourselves.

Support & Feedback

Have questions, found a bug, or have a feature idea? Email us at support@postgrescms.com

Ready to explore?

Connect your Postgres and start editing.

No setup, no metadata tables, and your secrets never leave the browser.