Skip to content

Examples

This section provides hands-on examples demonstrating NpgsqlRest features. Each example builds on the previous one, progressively introducing more advanced concepts.

All examples are available in the examples repository on GitHub.

Prerequisites

Before running the examples, ensure you have:

  • PostgreSQL running locally (port 5432)
  • Bun runtime installed (bun.sh)
  • A database named example_db with default credentials (postgres/postgres)

Getting Started

  1. Clone the repository:
bash
git clone https://github.com/NpgsqlRest/npgsqlrest-docs.git
cd npgsqlrest-docs/examples
  1. Install dependencies (downloads the NpgsqlRest binary and sets up required tools):
bash
bun install
  1. Navigate to any example directory and run it:
bash
cd 1_my_first_function

# Apply database migrations
bun run db:up

# Start the server (also rebuilds TypeScript and HTTP files)
bun run dev
  1. Visit http://127.0.0.1:8080 to see the result.

Available Examples

ExampleDescriptionRelated Blog Post
1_my_first_functionThe basics: creating a PostgreSQL function and exposing it as an HTTP endpoint with automatic TypeScript client generationEnd-to-End Type Checking
2_static_type_checkingHow NpgsqlRest's autogenerated client code provides static type safety, catching breaking changes at build timeEnd-to-End Type Checking
3_security_and_authDatabase-level security with cookie-based authentication and the principle of least privilegeDatabase-Level Security
4_passwords_tokens_rolesPassword verification, JWT/Bearer tokens, role-based access control (RBAC), and external OAuth providersMultiple Auth Schemes & RBAC
5_csv_basic_authCSV exports with HTTP Basic Auth, Excel integration, and type composition for BI use casesPostgreSQL BI Server
6_image_uploadsSecure image uploads with file system storage, PostgreSQL Large Objects, and progress trackingSecure Image Uploads
7_csv_excel_uploadsCSV and Excel file ingestion with row-by-row processing and automatic TypeScript clientsCSV & Excel Ingestion
8_simple_chat_clientReal-time chat application using Server-Sent Events (SSE) and PostgreSQL RAISE statementsReal-Time Chat with SSE
9_http_callsExternal API calls from PostgreSQL using HTTP custom types defined in type commentsExternal API Calls
10_proxy_ai_serviceReverse proxy with transform mode for caching AI responses and external service integrationReverse Proxy & AI Service
11_crud_auto_apiAuto-generate REST CRUD endpoints from PostgreSQL tables with whitelist patternsZero to CRUD API

Available Commands

Each example provides these scripts:

CommandDescription
bun run devStart NpgsqlRest server (rebuilds TypeScript and HTTP files)
bun run buildCompile TypeScript to JavaScript
bun run watchWatch mode for TypeScript changes
bun run db:upApply database migrations
bun run db:listList pending migrations

Next Steps

After completing these examples, explore:

Comments

Released under the MIT License.