database connection.md

Connect Postgres for Next.js

Summary

Connect a Next.js app to PostgreSQL on Ample from a route handler. Read DATABASE_URL at request time (force-dynamic) with pg; with no DATABASE_URL supplied, Ample auto-provisions a managed PostgreSQL 16 database and injects its connection string as an encrypted environment variable.

Infrastructure requirements

Prerequisites

Exact tested configuration

Steps

  1. Keep the database out of the build. Mark the route handler dynamic and open the client per request; next build must not need the database.

  2. Deploy. Omit DATABASE_URL to auto-provision, or pass --env DATABASE_URL=... to use an existing database.

    ample deploy . --name <app-name> --public
    
  3. Test through the app. Fetch the route; it should report postgres=ok after a real query.

  4. Verify. Fetch the live URL and run the success checks below. On failure read the build log, then the runtime log, fix the cause and deploy again; do not blind-retry.

    ample logs <deployment_id> --kind build
    

Tested examples

Success checks

Limitations

Cost estimate

Estimated 10.00 USD per month (size prices from pricing.toml at build revision a1b8c38919e59cd035ebabaced73cf84ece24371).

Apps and managed databases auto-pause when idle; the estimate is the always-on monthly price of the tested sizes. Plan quotas and budgets apply.

Verification evidence

Last verified: 2026-09-20T01:42:25Z

Execution binding

MCP tool ample_deploy (registry mcp:ample_deploy), schema hash 876465fce906da0c observed 2026-09-20T01:55:48.667900+00:00 at revision 199ff1dfd526, binding state current, required scopes: servers:write, databases:read.