page:blueprints:bookkeeping practices:client portal:django
Bookkeeping practices: Client portal using Django
Summary
A client portal blueprint for bookkeeping practices built with Django 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;
- document_access (document_id, principal_reference, role, granted_at): who may read which document.
Public information includes service packages and cadence, onboarding checklist, and contact details. Sensitive items kept out of scope until handling is reviewed include bank statements and receipts, payroll data, and login credentials for accounting software. Never store client accounting-software credentials in these flows; these financial records are sensitive and no compliance is claimed.
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
- Bookkeeping practices: client portal using Django
- Where can I host Bookkeeping practices: Client portal built with Django?
- I need a genuinely specialized client portal workflow covering monthly close checklists, client workspaces and source-document retention.
Prerequisites
- A Django project (pip install into .ample/python from requirements.txt, then waitress serving project.wsgi from run.py reading PORT on the python-3.12 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 bookkeeping practices data classes may be handled at all; this blueprint models public information only.
Workflow Steps
- Model the bookkeeping practices domain: Create the tables client_entities, engagements, document_requests, close_checklists, document_access. Keep the sensitive classes (bank statements and receipts, payroll data, login credentials for accounting software) 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.
- Deploy: Run the synchronous deploy once and read the result. Re-running with no change is a no-op.
ample deploy . --name --public --start "python3 run.py" --env S3_ENDPOINT=... --env S3_REGION=... --env S3_BUCKET=... --env S3_ACCESS_KEY_ID=... --env S3_SECRET_ACCESS_KEY=..." - Verify: Run the pattern self-test(s) from the example (/p/private-document-library) and your own acceptance checks for the bookkeeping practices workflow.
ample logs --kind build
Tests and Limitations
Success Checks
- App responds on its public URL.
- Private-document-library self-test from the example.
Limitations
- The technical basis (private document library on Django) was verified with the pattern fixture; the bookkeeping practices 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.
- Verified on the python-3.12 template at s-1vcpu-1gb.