# Bookkeeping Practices: Project Tracker Using Laravel

A project tracker 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;
- **state_transitions** (record_type, from_state, to_state): the allowed state machine.

### Technical Basis
Verified on Laravel: a workspace-scoped table, an explicit state machine (draft to review to published) that rejects invalid transitions, and a cross-workspace read that returns nothing (transitions=true isolation=true).

### Resource Requirements
- **Compute**: Isolated x86_64 Firecracker microVMs that auto-pause when idle.
- **Postgres**: Managed PostgreSQL 16 runs in its own microVM.
- **S3-compatible object storage**: Buckets are S3-compatible with issued credentials.

### Prerequisites
- A Laravel project (composer install --no-dev from composer.lock).
- A PostgreSQL driver reading DATABASE_URL.
- Bucket credentials from `ample bucket create` passed as encrypted S3_* environment variables.
- Review which bookkeeping practices data classes may be handled.

### Workflow Steps
1. **Model the bookkeeping practices domain:** Create the tables client_entities, engagements, document_requests, close_checklists, state_transitions.
2. **Workflow step 1:** Model engagements and workstreams with explicit status transitions.
3. **Workflow step 2:** Scope every query by client entity.
4. **Workflow step 3:** Attach deliverables as private objects linked to workstreams.
5. **Workflow step 4:** Deploy and verify transitions and cross-client isolation.
6. **Deploy:** Run the synchronous deploy once.
7. **Verify:** Run the pattern self-test(s) and your own acceptance checks.

### Examples
- **Laravel Pattern Fixture:** Verified relational records basis for this blueprint. (Source: tests/deploy-canaries/laravel-patterns)

### Success Checks
- App responds on its public URL.
- Self-test from the example.

### Limitations
- No health, financial, privacy or other compliance claim is made.
- Public content only until actual data-handling requirements have been reviewed.

### Cost Estimate
- **Currency:** USD
- **Monthly Amount:** 10.0
- **Components:**
  - App server: size s-1vcpu-1gb, quantity 1.0, monthly amount 5.0
  - Managed PostgreSQL database: size s-1vcpu-1gb, quantity 1.0, monthly amount 5.0
