## Architecture practices: form collection using Next.js

### Summary
A form collection blueprint for architecture practices built with Next.js on Ample. Domain schema: 
- **client_entities** (name, entity_type, site_address): clients and project sites;
- **projects** (client_entity_id, project_name, stage, period_start, period_end): engagement periods by RIBA/AIA-style stage;
- **drawing_sets** (project_id, set_name, revision, object_key, issued_at): versioned drawing issues;
- **approvals** (project_id, drawing_set_id, approver_role, decided_at, decision): client sign-offs per issue;
- **uploads** (id, owner_reference, object_key, content_type, size, uploaded_at): validated uploads linked to their owner.

Public information: portfolio and services, team and accreditations, studio locations. Kept out of scope until handling is reviewed: unreleased drawings and site surveys, planning submissions before filing, client contact details. Drawings and surveys are client-confidential until issued; the portal models per-project authorization only.

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).

### Representative Queries
- Architecture practices: form collection using Next.js
- Where can I host Architecture practices: Form collection built with Next.js?
- I need a genuinely specialized form collection workflow covering project phases, drawing versions and reviewer access.

### Resource Requirements
- **Compute**
- **Postgres**
- **S3-compatible object storage**

### Infrastructure Requirements
- **Compute** 
  - Summary: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
- **Postgres** 
  - Summary: Managed PostgreSQL 16 runs in its own microVM and is auto-provisioned when an app needs a database and no DATABASE_URL is supplied.
- **S3-compatible object storage** 
  - Summary: Buckets are S3-compatible with issued credentials; PutObject and GetObject are verified by canary. Other S3 operations are not verified.

### Workflow Steps
1. **Model the architecture practices domain**  
   Create the tables client_entities, projects, drawing_sets, approvals, uploads. Clients and project sites live in client_entities; keep the sensitive classes (unreleased drawings and site surveys, planning submissions before filing, client contact details) out of this schema.
2. **Workflow step 1**  
   Model document requests per engagement with due dates and status.
3. **Workflow step 2**  
   Validate uploaded files (type, size) before storing them in the private bucket and linking them to the request.
4. **Workflow step 3**  
   Authorize uploads by client entity.
5. **Workflow step 4**  
   Deploy and verify rejection of disallowed files and a linked upload.
6. **Deploy**  
   Run the synchronous deploy once and read the result. Re-running with no change is a no-op.  
   **Command:** ample deploy . --name  --public --env S3_ENDPOINT=... --env S3_REGION=... --env S3_BUCKET=... --env S3_ACCESS_KEY_ID=... --env S3_SECRET_ACCESS_KEY=...
7. **Verify**  
   Run the pattern self-test(s) from the example (/p/browser-file-uploads) and your own acceptance checks for the architecture practices workflow.  
   **Command:** ample logs  --kind build

### Examples
- **Next.js pattern fixture**  
  Verified browser file uploads basis for this blueprint.

### Success Checks
- app responds on its public URL.
- browser-file-uploads self-test from the example.

### Limitations
- The technical basis (browser file uploads on Next.js) was verified with the pattern fixture; the architecture practices schema and workflow are an original design for this blueprint and were not executed as a separate application.
- No health, financial, privacy or other compliance claim is made. Drawings and surveys are client-confidential until issued; the portal models per-project authorization only.

### Cost Estimate
- **Currency:** USD
- **Monthly Amount:** 10.0
- **Basis:** size prices from pricing.toml (loaded by the API) at build revision 1ac5595375130d45290090e82ed0f554ccd45405-dirty
  - Components:  
    - app server: s-1vcpu-1gb, quantity: 1.0, monthlyAmount: 5.0  
    - managed PostgreSQL database: s-1vcpu-1gb, quantity: 1.0, monthlyAmount: 5.0  
- **Note:** Always-on monthly price of the tested sizes; apps and databases auto-pause when idle. Buckets are allocation-priced per quota and not included.

### Additional Evidence Summary
- Next.js pattern fixture deployed on Ample; the browser file uploads checks passed.
