page:recipes:rest api:express:persistent state

Host rest api with Express: Postgres-backed state

Summary

Deploy an Express REST API whose durable state lives in a managed PostgreSQL 16 database. With no DATABASE_URL supplied, Ample provisions the database and injects the connection string as an encrypted environment variable; the API stores rows with pg and serves them from a public HTTPS URL.

Representative Queries

Resource Requirements

Infrastructure Requirements

Prerequisites

Workflow Steps

  1. Check the start script
    Ample runs npm install, npm run build --if-present and npm run start on the node-22 template. The server must bind 0.0.0.0 and read PORT.

  2. Read DATABASE_URL at runtime
    Create a pg Pool from process.env.DATABASE_URL. Do not hard-code localhost credentials; a local .env is replaced by the managed database in production.

  3. Deploy
    Run the existing synchronous deploy once from the project directory and read the result. Exit 0 is live, 1 is failed, 2 is blocked on a required preflight action. Re-running with no change is a content-addressed no-op.

    ample deploy . --name  --public --format json
    
  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  --kind build
    

Examples

Success Checks

Limitations

Cost Estimate

Components

Note: 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.