page:blueprints:law firms:client portal:django
Law firms: client portal using Django
Summary
A client portal blueprint for law firms built with Django 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;
- document_access (document_id, principal_reference, role, granted_at): who may read which document.
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 Django: 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).
Resource Requirements
- Compute
- Postgres
- S3-compatible object storage
Workflow Steps
- Model the law firms domain: Create the tables client_entities, matters, document_requests, shared_documents, document_access. Clients with conflict-check status live in client_entities; keep sensitive classes (privileged communications and case files, identity and financial documents, opposing-party information) out of this schema.
- Workflow step 1: Model client entities and engagement periods; every document belongs to one engagement.
- Workflow step 2: Authorize by client entity and role before any storage access (401 without identity, 403 for the wrong client).
- Workflow step 3: Store documents in the private bucket and stream them through the app.
- Workflow step 4: Deploy and verify the negative authorization tests and an authorized download.
- Deploy: Run the synchronous deploy once and read the result. Re-running with no change is a no-op.
- Verify: Run the pattern self-test(s) from the example (/p/private-document-library) and your own acceptance checks for the law firms workflow.
Cost Estimate
- Currency: USD
- Monthly Amount: 10.0
- Basis: Size prices from pricing.toml (loaded by the API) at build revision 1ac5595375130d45290090e82ed0f554ccd45405-dirty
Limitations
- The technical basis (private document library on Django) 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 claims are made. Matter documents are privileged; the portal models per-matter authorization only.
Examples
- Django pattern fixture: Verified private document library basis for this blueprint.
Success Checks
- App responds on its public URL:
ample canary django patterns - Check private-document-library self-test from the example:
/p/private-document-library
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 Law firms
- Browse Client portal
- Browse Django
- Browse Deploy web app