### Accounting firms: form collection using Next.js

#### Summary
A form collection blueprint for accounting firms built with Next.js on Ample. Domain schema:  
- **client_entities** (legal_name, entity_type, fiscal_year_end, jurisdiction): the businesses and individuals served;  
- **engagements** (client_entity_id, service_line, period_start, period_end, status): bookkeeping, tax and audit engagements by period;  
- **document_requests** (engagement_id, title, due_at, status, uploaded_object_key): requests for source documents;  
- **deliverables** (engagement_id, title, object_key, released_at): returns and statements released to the client;  
- **uploads** (id, owner_reference, object_key, content_type, size, uploaded_at): validated uploads linked to their owner.  
Public information: service lines and typical engagement periods, filing calendars and deadlines, office locations. Kept out of scope until handling is reviewed: tax identifiers and financial statements, bank and payroll records, identity documents. Financial records and tax identifiers are regulated in most jurisdictions; the portal flows here model authorization only and claim no compliance.

#### Representative Queries
- Accounting firms: form collection using Next.js  
- Where can I host Accounting firms: Form collection built with Next.js?  
- I need a genuinely specialized form collection workflow covering engagement periods, client entities and document authorization.

#### Resource Requirements
- primitive:compute  
- primitive:postgres  
- primitive:s3-compatible-object-storage

#### Infrastructure Requirements
- **Compute**: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
- **Postgres**: 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**: 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 accounting firms domain: Create the tables client_entities, engagements, document_requests, deliverables, uploads. The businesses and individuals served lives in client_entities; keep the sensitive classes (tax identifiers and financial statements, bank and payroll records, identity documents) 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. **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. Run the pattern self-test(s) from the example (/p/browser-file-uploads) and your own acceptance checks for the accounting firms 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: **Expect**: ample canary next js patterns
- Browser-file-uploads self-test from the example: **Expect**: see the pattern fixture checks.

#### Limitations
- The technical basis (browser file uploads on Next.js) was verified with the pattern fixture; the accounting firms 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. Financial records and tax identifiers are regulated in most jurisdictions; the portal flows here model authorization only and claim no compliance.

#### Cost Estimate
- **Currency**: USD  
- **Monthly Amount**: 10.0  
- **Components**:  
  - App server, size s-1vcpu-1gb, quantity 1.0, monthlyAmount 5.0
  - Managed PostgreSQL database, size 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.
