# Bookkeeping practices: form collection using Laravel

## Summary
A form collection blueprint for bookkeeping practices built with Laravel on Ample. Domain schema:  
- **client_entities** (legal_name, entity_type, accounting_software, period_cadence): clients and their bookkeeping cadence;  
- **engagements** (client_entity_id, period_start, period_end, close_status): monthly or quarterly close engagements;  
- **document_requests** (engagement_id, category, due_at, status, uploaded_object_key): receipts, statements and payroll summaries requested;  
- **close_checklists** (engagement_id, item, done_at): close tasks per period;  
- **uploads** (id, owner_reference, object_key, content_type, size, uploaded_at): validated uploads linked to their owner.  
Public information: service packages and cadence, onboarding checklist, contact details. Kept out of scope until handling is reviewed: bank statements and receipts, payroll data, login credentials for accounting software.  
Never store client accounting-software credentials in these flows; financial records are sensitive and no compliance is claimed. 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
- Bookkeeping practices: form collection using Laravel  
- Where can I host Bookkeeping practices: Form collection built with Laravel?  
- I need a genuinely specialized form collection workflow covering monthly close checklists, client workspaces and source-document retention.

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

## Framework & Workload
- **Framework**: Laravel
- **Workload**: Form collection
- **Industry**: Bookkeeping practices

## Execution Status
- Release Status: published
- Support Status: verified
- Execution Status: ready

## Prerequisites
1. 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)  
2. A PostgreSQL driver reading DATABASE_URL (auto-provisioned when omitted)  
3. Bucket credentials from `ample bucket create` passed as encrypted S3_* environment variables  
4. A review of which bookkeeping practices data classes may be handled at all; this blueprint models public information only

## Workflow Steps
1. **Model the bookkeeping practices domain**: Create the tables client_entities, engagements, document_requests, close_checklists, uploads. Keep sensitive classes 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.  
7. **Verify**: Run the pattern self-test(s) from the example and your own acceptance checks for the bookkeeping practices workflow.

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

## Limitations
- The technical basis was verified with the pattern fixture; the bookkeeping 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.  
- Public content and synthetic examples only until actual data-handling requirements have been reviewed.

## Cost Estimate
- **Currency**: USD  
- **Monthly Amount**: 10.0  
- **Basis**: size prices from pricing.toml  
- **Components**:  
  - app server (size: s-1vcpu-1gb, amount: 5.0)  
  - managed PostgreSQL database (size: s-1vcpu-1gb, amount: 5.0)

## Evidence Summary
- Laravel pattern fixture deployed on Ample; the browser file uploads checks passed.  
- Implementation Revision: 118ad1c6d7d23d4c2ce069254bab9ec9d37cd57b-dirty (CLI 118ad1c)  
- Observed At: 2026-09-20T20:36:21Z  
- Expires At: 2027-03-19T20:36:21Z

## 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  
- Read the existing agent authentication setup  
- Browse Bookkeeping practices  
- Browse Form collection  
- Browse Laravel  
- Browse Deploy web app

## Formats
- [HTML Format](/content/blueprints/bookkeeping-practices/form-collection/laravel/index.html)  
- [Markdown Format](/content/blueprints/bookkeeping-practices/form-collection/laravel.md)  
- [JSON Format](https://api.ample.computer/v1/catalog/recipes/page%3Ablueprints%3Abookkeeping-practices%3Aform-collection%3Alaravel)
