page:blueprints:law firms:project tracker:laravel
Law firms: project tracker using Laravel
Summary
A project tracker blueprint for law firms built with Laravel on Ample. Domain schema:
- client_entities (name, entity_type, conflict_check_reference): clients with conflict-check status
- matters (client_entity_id, practice_area, opened_at, closed_at, status): engagement periods as matters
- document_requests (matter_id, title, due_at, status, uploaded_object_key): documents requested from the client
- shared_documents (matter_id, title, object_key, authorized_role): documents released to authorized client contacts
- state_transitions (record_type, from_state, to_state): the allowed state machine.
Public information: practice areas and attorney profiles, intake process and fee structure overview, office locations. Kept out of scope until handling is reviewed: privileged communications and case files, identity and financial documents, opposing-party information. Matter documents are privileged; the portal models per-matter authorization only. Professional-conduct and confidentiality obligations are not established here.
Technical Basis Verified on Laravel
- A workspace-scoped table
- An explicit state machine (draft to review to published) that rejects invalid transitions
- A cross-workspace read that returns nothing (transitions=true isolation=true).
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 createpassed as encrypted S3_* environment variables - A review of which law firms data classes may be handled at all; this blueprint models public information only
Workflow Steps
- Model the law firms domain: Create the tables client_entities, matters, document_requests, shared_documents, state_transitions.
- Workflow step 1: Model engagements and workstreams with explicit status transitions.
- Workflow step 2: Scope every query by client entity.
- Workflow step 3: Attach deliverables as private objects linked to workstreams.
- Workflow step 4: Deploy and verify transitions and cross-client isolation.
- Deploy: Run the synchronous deploy once and read the result.
- Verify: Run the pattern self-test(s) from the example (/p/relational-records) and your own acceptance checks for the law firms workflow.
Success Checks
- App responds on its public URL: ample canary laravel patterns
- Relational-records self-test from the example
Limitations
- The technical basis (relational records on Laravel) was verified with the pattern fixture; the law firms 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.
Cost Estimate
- Currency: USD
- Monthly Amount: 10.0
- Basis: size prices from pricing.toml (loaded by the API)
Components
- App server: s-1vcpu-1gb, Quantity: 1.0, Monthly Amount: 5.0
- Managed PostgreSQL database: s-1vcpu-1gb, Quantity: 1.0, Monthly Amount: 5.0
Note: Always-on monthly price of the tested sizes; apps and databases auto-pause when idle. Buckets are allocation-priced per quota and not included.