NpgsqlRest - Automatic REST API for PostgreSQL
Skip to content

NpgsqlRestYour SQL is the API

Annotate PostgreSQL functions and SQL files with comments to declare HTTP routes, auth, caching, retries, and rate limits. Get a fast, typed REST API — no controllers, no models, no boilerplate. Then test it with SQL files too.

~ npgsqlrest
$
#2 of 20
services benchmarked,
3,500+ req/s¹
0
lines of C# or Python
in a production app²
faster iteration on
signature changes³
MIT
licensed,
open source
  • Declare, don't code — caching, auth, retries, rate limiting — all declared as SQL annotations.
  • PostgreSQL at the center — the opposite of Clean Architecture: the database drives everything.
  • Types flow outward — PostgreSQL types generate TypeScript and Dart clients automatically.
  • No middle tier — no controllers, no models, no mapping layers, no boilerplate.
  • Iterate 5× faster — schema is the single source of truth; signature changes propagate to typed clients automatically, and an entire class of type-drift bugs simply cannot happen.
  • Production-grade by default — response caching, rate limiting, retries, PostgreSQL multi-host failover, load balancing, and Excel/HTML response rendering — configured in JSON, not custom middleware.
  • You write SQL, not a URL query language — unlike client-composed query APIs, the API surface is exactly the SQL you wrote: joins, CTEs, window functions — auditable with grep.
  • The whole dev loop in SQL — tests are plain .sql files run against real endpoints in-process (--test), and watch mode (--watch) restarts on SQL, config, and even database routine changes.
  • Built for the AI era — one type system to reason about, machine-verified output (schema check at startup, generated TypeScript checked by tsc), and @mcp tools for AI agents — with OpenAI/Anthropic tool schemas and llms.txt generated from the same catalog.

The Whole Idea, in 19 Slides

PostgreSQL in. REST API, typed TypeScript client, and AI-agent tools out — with real, reproducible numbers from a product in production. Use the arrows, thumbnails, or your keyboard (←/→, F for fullscreen, N for speaker notes).

The backend that writes itself · 20261 / 19
Slide 1: The backend that writes itself — title

A Fully Declarative Backend

SQL declares what data. Annotations declare what behavior. Configuration declares what infrastructure. Tests declare what correctness — also in SQL. There is no imperative glue anywhere — no controllers, no services, no mappers to keep in sync. And it is built on the declarative language that has been running the world's data for 50 years — the one every developer, and every LLM, already knows: SQL.

Declarative Annotations

Declare what you want from your endpoint — caching, authorization, timeouts, retries, rate limiting — right where the SQL lives.

SQL File

~ sql/users.sql
$

PostgreSQL Function

~ sql/get_users.sql
$

Tests Are SQL Files Too

No test framework, no running server, no mocks. npgsqlrest --test invokes the real endpoint pipeline in-process, on the test's own transaction — insert fixtures, call the endpoint (it sees your uncommitted rows), assert with SQL, roll back.

sql
-- tests/get_users.test.sql
begin;

insert into users (email) values ('fixture@example.com');

/*
GET /api/get-users
# @claim user_id=1
*/
select status = 200, 'authenticated caller gets 200' from _response;
select body::jsonb @> '[{"email": "fixture@example.com"}]', 'fixture is listed' from _response;

rollback;
console
$ npgsqlrest ./config.json --test

PASS  tests/get_users.test.sql  (2 assertions, 52ms)
19 passed, 0 failed, 0 error(s)  —  19 assertions in 9 files
endpoint coverage: 2/2 (100%)

Parallel isolated connections, throwaway test databases, per-test clones, tags, JUnit XML, and endpoint coverage with a CI threshold gate. And with --watch, the running server restarts on SQL file, configuration, and database routine changes — create or replace a function in psql and the endpoint is live seconds later, TypeScript client regenerated.

From the Blog


Build, Test, Publish and ReleaseLicenseGitHub StarsGitHub Forks
Released under the MIT License.
Copyright © 2024-2026 VB Consulting