page:blueprints:accounting firms:client portal:django
Accounting firms: client portal using Django
Summary
A client portal blueprint for accounting firms built with Django on Ample. Domain schema:
- client_entities (legal_name, entity_type, fiscal_year_end, jurisdiction): the businesses and individuals served;
- engagements (client_entity_id, service_line, period_start, period_end, status): bookkeeping, tax and audit engagements by period;
- document_requests (engagement_id, title, due_at, status, uploaded_object_key): requests for source documents;
- deliverables (engagement_id, title, object_key, released_at): returns and statements released to the client;
- document_access (document_id, principal_reference, role, granted_at): who may read which document.
Public information includes service lines and typical engagement periods, filing calendars, and deadlines. Kept out of scope until handling is reviewed: tax identifiers and financial statements, bank and payroll records, identity documents. Financial records and tax identifiers are regulated in most jurisdictions; the portal flows here model authorization only and claim no compliance.
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).
Representative Queries
- Accounting firms: client portal using Django
- Where can I host Accounting firms: Client portal built with Django?
- I need a genuinely specialized client portal workflow covering engagement periods, client entities, and document authorization.
Workflow Steps
- Model the accounting firms domain: Create the tables client_entities, engagements, document_requests, deliverables, document_access. The businesses and individuals served live in client_entities; keep the sensitive classes (tax identifiers and financial statements, bank and payroll records, identity documents) 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.
Tested Configuration
- Template: python-3.12
- Runtime: python
- Size: s-1vcpu-1gb
- Install: python3 -m pip install --target .ample/python -r requirements.txt
- Start: PYTHONPATH=.ample/python:${PYTHONPATH:-} python3 run.py
Limitations
- The technical basis (private document library on Django) was verified with the pattern fixture; the accounting 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. Financial records and tax identifiers are regulated in most jurisdictions; the portal flows here model authorization only and claim no compliance.
- Verified on the python-3.12 template at s-1vcpu-1gb; region, request-duration limits, and other sizes are unknown or unverified.
Cost Estimate
- Currency: USD
- Monthly Amount: 10.0
- Basis: size prices from pricing.toml (loaded by the API) at build revision 1ac5595375130d45290090e82ed0f554ccd45405-dirty
- 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
Examples
- Django pattern fixture: Verified private document library basis for this blueprint. Source reference: tests/deploy-canaries/django-patterns
Success Checks
- App responds on its public URL
- Private-document-library self-test from the example
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