page:blueprints:digital agencies:form collection:next js

Digital agencies: form collection using Next.js

Summary

A form collection blueprint for digital agencies built with Next.js on Ample. Domain schema:

Public information: services and case studies, team, contact. Kept out of scope until handling is reviewed: unreleased creative and campaign plans, client analytics exports, brand credentials. Unreleased creative is confidential; brand platform credentials never belong in these flows.

Representative Queries

Technical Basis

Technical basis verified on Next.js: content-type and size validation that rejects disallowed files, an object written to a private bucket and a row linking the record to the object key (reject=ok upload=ok linked=ok).

Resource Requirements

Infrastructure Requirements

Prerequisites

Workflow Steps

  1. Model the digital agencies domain: Create the tables client_entities, engagements, approval_rounds, deliverables, uploads. Client brands live in client_entities; keep the sensitive classes (unreleased creative and campaign plans, client analytics exports, brand credentials) out of this schema.
  2. Model document requests per engagement with due dates and status.
  3. Validate uploaded files (type, size) before storing them in the private bucket and linking them to the request.
  4. Authorize uploads by client entity.
  5. Deploy and verify rejection of disallowed files and a linked upload.
  6. Run the synchronous deploy once and read the result. Re-running with no change is a no-op. (ample deploy . --name --public --env S3_ENDPOINT=... --env S3_REGION=... --env S3_BUCKET=... --env S3_ACCESS_KEY_ID=... --env S3_SECRET_ACCESS_KEY=...)
  7. Run the pattern self-test(s) from the example (/p/browser-file-uploads) and your own acceptance checks for the digital agencies workflow. (ample logs --kind build)

Examples

Limitations

Cost Estimate

Evidence Summary

Last Verified At

2026-09-21T02:34:39Z