# Configure S3-compatible access for Nuxt

## Summary
Object storage client for a Nuxt app on Ample. Verified on Nuxt: bucket credentials delivered as encrypted S3_* environment variables and a validated PutObject/GetObject round-trip linked to a database row (upload=ok linked=ok). Build and start: nuxt build then node .output/server/index.mjs (reads HOST and PORT) on the node-22 template.

## Prerequisites
- A Nuxt project (nuxt build then node .output/server/index.mjs (reads HOST and PORT) on the node-22 template)
- A bucket from `ample bucket create` with credentials passed as encrypted S3_* environment variables
- An Ample account token with servers:write, buckets:read

## Workload
### Build and start
```bash
nuxt build then node .output/server/index.mjs (reads HOST and PORT) on the node-22 template; the server must bind 0.0.0.0 on PORT.
```

### Create the bucket and pass its credentials
```bash
ample deploy . --name  --public --env S3_ENDPOINT=... --env S3_REGION=... --env S3_BUCKET=... --env S3_ACCESS_KEY_ID=... --env S3_SECRET_ACCESS_KEY=...
```

### Verify
```bash
ample logs  --kind build
```

## Limitations
- Verified on the node-22 template at s-1vcpu-1gb; other sizes and Nuxt major versions are not verified.
- Region, compliance attestations, and request-duration limits are unknown and not claimed.
- PutObject and GetObject with path-style addressing are verified; other S3 operations are not.

## Success Checks
- App responds on its public URL: **ample canary nuxt patterns**
- Browser-file-uploads check from the example: **see the pattern fixture checks**

## Cost Estimate
- **Currency:** USD
- **Monthly Amount:** 5.0
- **Basis:** Size prices from pricing.toml (loaded by the API) at build revision 1ac5595375130d45290090e82ed0f554ccd45405-dirty

### Components
- **App server**: Size: s-1vcpu-1gb, Quantity: 1.0, Monthly Amount: 5.0
- Note: Always-on monthly price of the tested sizes; apps auto-pause when idle. Buckets are allocation-priced per quota and not included.

## Evidence Summary
- **Kind:** canary_run
- **Summary:** Nuxt pattern fixture deployed on Ample (nuxt build then node .output/server/index.mjs (reads HOST and PORT) on the node-22 template); for this guide: bucket credentials delivered as encrypted S3_* environment variables and a validated PutObject/GetObject round-trip linked to a database row (upload=ok linked=ok).
- **Observed At:** 2026-09-20T03:31:44Z
- **Implementation Revision:** 03b6402b1b3e19178985f08ea4033804521d85d4-dirty (CLI b75e104)
- **Expires At:** 2027-03-19T03:31:44Z

## Next Actions
- **Browse the catalog index**: GET /v1/catalog
- **Search published recipes by intent, stack, and constraints**: POST /v1/catalog/search
- **Prepare a side-effect-free deployment plan for an authorized project**: POST /v1/catalog/plan
- **Read the existing agent authentication setup**: GET /mcp/setup
- **Browse Nuxt**: GET /v1/catalog/nodes/stack%3Aframework-nuxt
- **Browse Connect app to storage**: GET /v1/catalog/nodes/intent%3Aconnect-app-to-storage
- **Browse Browser file uploads**: GET /v1/catalog/nodes/pattern%3Abrowser-file-uploads

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

## Format References
- [HTML Version](/content/guides/nuxt/object-client/index.html)
- [Markdown Version](/content/guides/nuxt/object-client.md)
