### Architecture practices: client portal using Laravel

A client portal 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;
- **document_access** (document_id, principal_reference, role, granted_at): who may read which document.

Public information includes: portfolio and services, team and accreditations, studio locations. Drawings and surveys are client-confidential until issued; the portal models per-project authorization only.

### Representative Queries
- Architecture practices: client portal using Laravel
- Where can I host Architecture practices: Client portal built with Laravel?
- I need a genuinely specialized client portal workflow covering project phases, drawing versions and reviewer access.

### Resource Requirements
- Compute
- Postgres
- 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.

### Framework and Workload
- **Framework**: Laravel
- **Workload**: Client portal
- **Industry**: Architecture practices

### Prerequisites
- A Laravel project (composer install --no-dev from composer.lock, then FrankenPHP serving public/ (php-server with the index.php fallback) reading PORT on the php-8.5 template)
- A PostgreSQL driver reading DATABASE_URL (auto-provisioned when omitted)
- Bucket credentials from `ample bucket create` passed as encrypted S3_* environment variables
- A review of which architecture practices data classes may be handled at all; this blueprint models public information only.

### Tested Configuration
- **Template**: php-8.5
- **Runtime**: php
- **Size**: s-1vcpu-1gb
- **Install**: composer install --no-dev --prefer-dist --no-interaction --no-progress --optimize-autoloader
- **Start**: frankenphp php-server --listen :$PORT --root public

### Workflow Steps
1. Model the architecture practices domain: Create the tables client_entities, projects, drawing_sets, approvals, document_access.
2. Model client entities and engagement periods; every document belongs to one engagement.
3. Authorize by client entity and role before any storage access.
4. Store documents in the private bucket and stream them through the app.
5. Deploy and verify the negative authorization tests and an authorized download.
6. Run the synchronous deploy once and read the result. Re-running with no change is a no-op.
7. Run the pattern self-test(s) from the example and your own acceptance checks for the architecture practices workflow.

### Cost Estimate
- **Monthly Amount**: 10.0 USD
- **Components**:
  - App server: s-1vcpu-1gb (5.0 USD)
  - Managed PostgreSQL database: s-1vcpu-1gb (5.0 USD)

### Limitations
- The technical basis (private document library on Laravel) 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.
- Public content and synthetic examples only until actual data-handling requirements have been reviewed.

### Evidence Summary
- **Canary Run**: Laravel pattern fixture deployed on Ample; the private document library checks passed; this blueprint's schema and workflow build on that verified basis.

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