# Architecture practices: form collection using Laravel

## Summary
A form collection blueprint for architecture practices built with Laravel 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 includes: 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 Laravel
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 Laravel
- Where can I host Architecture practices: Form collection built with Laravel?
- I need a genuinely specialized form collection workflow covering project phases, drawing versions and reviewer access.

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

## Infrastructure Requirements
1. **Compute**: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
2. **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.
3. **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 architecture practices domain**: Create the tables client_entities, projects, drawing_sets, approvals, uploads. Avoid sensitive classes (unreleased drawings, site surveys, client contact details).
2. **Validate**: Validate uploaded files (type, size) before storing them in the private bucket and linking them to the request.
3. **Authorize uploads**: Authorize uploads by client entity.
4. **Deploy**: Run the synchronous deploy once and read the result. Re-running with no change is a no-op.
5. **Verify**: Run the pattern self-test(s) from the example and your own acceptance checks for the architecture practices workflow.

## Success Checks
- App responds on its public URL
- Browser-file-uploads self-test from the example

## Limitations
- The architecture practices schema and workflow are an original design for this blueprint and were not executed as a separate application. Drawings and surveys are client-confidential until issued.
- Verified on the php-8.5 template at size unknown.

## Cost Estimate
- **Currency**: USD
- **Monthly Amount**: $10.00
  - **App server**: s-1vcpu-1gb, $5.00
  - **Managed PostgreSQL database**: s-1vcpu-1gb, $5.00

## Next Actions
- Browse the catalog index
- Search published recipes by intent, stack and constraints
- Prepare a side-effect-free deployment plan for an authorized project
