### Summary
A client portal blueprint for publishing built with Laravel on Ample.

**Domain schema:**  
- **titles** (isbn_or_slug, title, author, imprint, published_at): the catalog of titles;  
- **editions** (title_id, format, version, object_key): editions and versioned files;  
- **customer_workspaces** (name, license_type, seat_count): institutional or trade customers;  
- **customer_assets** (workspace_id, title_id, object_key, license_expires_at): licensed files per customer;  
- **document_access** (document_id, principal_reference, role, granted_at): who may read which document.

**Public information:** title catalog and author pages, release schedules, rights and permissions contact. 
**Kept out of scope until handling is reviewed:** unreleased manuscripts, royalty statements, customer license keys. 
Manuscripts and royalty data are confidential; licensed files are authorized per customer workspace.

**Technical basis verified on Laravel:** a role-to-document access model with negative tests (401 without identity, 403 for the wrong role) and a private-bucket round-trip for the allowed role (private=ok).

### Representative Queries
- Publishing: client portal using Laravel  
- Where can I host Publishing: Client portal built with Laravel?  
- I need a genuinely specialized client portal workflow covering editorial roles, publication versions and rights-scoped assets.

### 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.  
- **Postgres**: Managed PostgreSQL 16 runs in its own microVM auto-provisioned when an app needs a database.  
- **S3-compatible object storage**: Buckets are S3-compatible with issued credentials; basic operations are verified.

### Prerequisites  
- A Laravel project  
- Database driver configured  
- Bucket credentials passed as encrypted environment variables

### Workflow Steps
1. Model the publishing domain: Create tables for titles, editions, customer_workspaces, and document_access.  
2. Authorize by client entity and role before any storage access.  
3. Store documents in the private bucket and stream them.  
4. Deploy and verify the negative authorization tests.  
5. Run the synchronous deploy once and read the result.

### Examples
#### Laravel Pattern Fixture
Verified private document library basis for this blueprint.

### Success Checks
- App responds on its public URL  
- Self-test for private-document-library

### Limitations
- The workflow is an original design.  
- No health, financial, or privacy compliance claim is made.  
- Licensed files are authorized per customer workspace.

### Cost Estimate
- **Currency**: USD  
- **Monthly Amount**: 10.00  
- **Basis**: Based on pricing for tested sizes:  
  - App server: s-1vcpu-1gb  
  - Managed PostgreSQL database: s-1vcpu-1gb

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