# Configure Build and Start for Next.js

## Summary
Configure build and start for a Next.js app on Ample. A server-rendered app runs `next build` then `next start` on the node-22 template with the detected package manager; a static export is published as a static site. The app must bind `0.0.0.0` on `PORT`.

## Prerequisites
- A `package.json` with build and start scripts (`next build`, `next start -H 0.0.0.0 -p ${PORT:-3000}`)
- Node 22 compatible dependencies
- An Ample account token with `servers:write`

## Tested Configuration
- **Template**: node-22
- **Runtime**: node
- **Size**: s-1vcpu-1gb
- **Install Command**: `npm install`
- **Build Command**: `npm run build --if-present`
- **Start Command**: `npm run start`

## Workflow Steps
1. **Make next start listen correctly**  
   Use `next start -H 0.0.0.0 -p ${PORT:-3000}` so the health check reaches the server.
2. **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.  
   Command: `ample deploy . --name  --public --format json`
3. **Static exports**  
   With output: 'export', the build is published as a static site with correct 404 handling; no server process runs.
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.  
   Command: `ample logs  --kind build`

## Success Checks
- **Page renders**  
  Kind: http_get  
  Path: `/`  
  Expect: `ample canary next basic ssr`
- **API route stays a Next route**  
  Kind: http_get  
  Path: `/api/canary`  
  Expect: `next api stays next`

## Limitations
- Verified on the node-22 template at s-1vcpu-1gb; other templates and sizes are not verified by this recipe.
- Region, compliance attestations, and request-duration limits are unknown and not claimed.
- Apps auto-pause when idle and wake on the next request; always-on is an operator setting, not a plan feature.
- Next.js 15 was tested; other majors are not verified.
- Image optimization, ISR, and middleware behavior are not verified.

## Cost Estimate
- **Currency**: USD
- **Monthly Amount**: 5.0
- **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.
