## Configure build and start for Nuxt

### Summary
Configure build and start for a Nuxt app on Ample. `nuxt build` produces `.output`; start it with `node .output/server/index.mjs`, which reads `PORT` and binds all interfaces. Ample detects the runtime, installs dependencies, runs the build when present, and starts the app on the `node-22` template behind a public HTTPS URL.

### Overview
- **Framework**: Nuxt  
- **Workload**: Configure build and start  
- **Release Status**: Published  
- **Support Status**: Verified  
- **Execution Status**: Ready

### Prerequisites
- A `package.json` with build and start scripts
- A server that listens on `process.env.PORT` and `0.0.0.0`
- An Ample account token with `servers:write`

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

### Workflow Steps
1. **Make the start command bind correctly**: 
   - `nuxt build` produces `.output`; start it with `node .output/server/index.mjs`, which reads `PORT` and binds all interfaces.

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. 
   - Command: `ample deploy . --name  --public --format json`

3. **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
- **Description**: Page or root route responds  
  **Kind**: `http_get`  
  **Path**: `/`  
  **Expect**: `ample canary nuxt basic`

### 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.
- Nuxt 3 was tested; Nitro presets other than node-server are not verified.

### Cost Estimate
- **Currency**: USD  
- **Monthly Amount**: 5.0  
- **Basis**: Size prices from pricing.toml loaded by the API at build revision `1ac5595375130d45290090e82ed0f554ccd45405-dirty`  
- **Components**:  
   - Name: app server  
   - Size: `s-1vcpu-1gb`  
   - Quantity: 1.0  
   - 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.

### Examples
- **Title**: nuxt-basic canary  
  **Description**: Nuxt app with `nuxt build` and the Nitro node server.  
  **Source Ref**: `tests/deploy-canaries/nuxt-basic`

### Evidence Summary
- **Kind**: canary_run  
  **Summary**: Nuxt app (`nuxt build`, `node .output/server/index.mjs`) deployed on `node-22` and rendered the expected page.  
  **Observed At**: 2026-09-20T00:22:15Z  
  **Implementation Revision**: 1764076-tls-account-903d345  
  **Expires At**: 2027-03-19T00:22:15Z  
  **Scope**:  
   - **CLI Version**: 0.1.20  
   - **Platform**: hosted-beta  
   - **Template**: node-22

### Next Actions
- **Action ID**: browse-catalog  
  **Label**: Browse the catalog index  
  **Parameters**: {}
- **Action ID**: search-recipes  
  **Label**: Search published recipes by intent, stack and constraints  
  **Parameters**: {"body":{"limit":5,"query":"Configure build and start for Nuxt"}}
