page:blueprints:digital agencies:form collection:django

Digital agencies: form collection using Django

Summary

A form collection blueprint for digital agencies built with Django on Ample. Domain schema:

Public information: services and case studies, team, contact. Kept out of scope until handling is reviewed: unreleased creative and campaign plans, client analytics exports, brand credentials. Unreleased creative is confidential; brand platform credentials never belong in these flows. Technical basis verified on Django: content-type and size validation that rejects disallowed files, an object written to a private bucket and a row linking the record to the object key (reject=ok upload=ok linked=ok).

Representative Queries

Resource Requirements

Infrastructure Requirements

Workflow Steps

  1. Model the digital agencies domain: Create the tables client_entities, engagements, approval_rounds, deliverables, uploads. Client brands lives in client_entities; keep the sensitive classes (unreleased creative and campaign plans, client analytics exports, brand credentials) out of this schema.
  2. Workflow step 1: Model document requests per engagement with due dates and status.
  3. Workflow step 2: Validate uploaded files (type, size) before storing them in the private bucket and linking them to the request.
  4. Workflow step 3: Authorize uploads by client entity.
  5. Workflow step 4: Deploy and verify rejection of disallowed files and a linked upload.
  6. Deploy: Run the synchronous deploy once and read the result. Re-running with no change is a no-op.
    • Command: 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=...
  7. Verify: Run the pattern self-test(s) from the example (/p/browser-file-uploads) and your own acceptance checks for the digital agencies workflow.
    • Command: ample logs --kind build

Limitations