# Equipment rental: inventory manager using Laravel

## Summary

A inventory manager blueprint for equipment rental built with Laravel on Ample. Domain schema: equipment (sku, name, category, day_rate, serial_tracked): rental catalog; stock_movements (sku, unit_serial, delta, reason, moved_at): check-outs, returns and maintenance; rentals (rental_no, period_start, period_end, status): rentals with status transitions; rental_lines (rental_no, sku, unit_serial, rate): rental contents; events (seq, record_type, record_id, kind, at): application-owned history written in the same transaction. Public information: equipment catalog and rates, availability calendar, deposit and insurance terms. Kept out of scope until handling is reviewed: renter identity documents, payment and deposit details. Identity verification and deposits are outside these flows; only availability and rental status are modeled. Technical basis verified on Laravel: an optimistic version check and an event row written in the same transaction, a stale update rejected, and a history query over the application-owned events (history=2 conflict=rejected).

## Infrastructure requirements

- Compute: verified
- Postgres: verified
- S3-compatible object storage: verified

## Prerequisites

- A Laravel project (composer install --no-dev)
- A PostgreSQL driver reading DATABASE_URL
- Bucket credentials from `ample bucket create` passed as encrypted S3_* environment variables
- A review of which equipment rental data classes may be handled at all; this blueprint models public information only

## Exact 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`

## Steps

1. **Model the equipment rental domain.** Create the tables equipment, stock_movements, rentals, rental_lines, events.
2. **Workflow step 1.** Model SKUs and stock movements; derive stock from movements
3. **Workflow step 2.** Apply movements transactionally with an optimistic version check on the SKU
4. **Workflow step 3.** Record an event per movement for history
5. **Workflow step 4.** Deploy and verify history and rejected stale updates
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 equipment rental workflow.

## Tested examples

- **Laravel pattern fixture:** Verified transactional workflows basis for this blueprint.

## Success checks

- App responds on its public URL.
- Transactional-workflows self-test from the example.

## Limitations

- Verified on the php-8.5 template at s-1vcpu-1gb; other sizes are unknown or unverified.
- Managed PostgreSQL 16 only; extensions, connection limits and backup or restore procedures are not verified.

## Cost estimate

Estimated 10.00 USD per month.

## Verification evidence

- Canary run detail: Laravel pattern fixture deployed on Ample (composer install --no-dev from composer.lock).

## Execution binding

MCP tool `ample_deploy` (registry `mcp:ample_deploy`).
