page:blueprints:professional training:asset library:django

Professional Training: Asset Library Using Django

Summary

A asset library blueprint for professional training built with Django on Ample. Domain schema:

Public information: certification catalog, cohort dates, trainer credentials. Kept out of scope until handling is reviewed: exam results, employer billing, participant identity. Exam results and certifications are personal records; only cohort logistics and materials are modeled. 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).

Framework

Resource Requirements

Infrastructure Requirements

  1. Compute: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
  2. Postgres: Managed PostgreSQL 16 runs in its own microVM and is auto-provisioned when an app needs a database and no DATABASE_URL is supplied.
  3. S3-compatible object storage: Buckets are S3-compatible with issued credentials; PutObject and GetObject are verified by canary. Other S3 operations are not verified.

Prerequisites

Workflow Steps

  1. Model the professional training domain: Create the tables course_groups, memberships, sessions, materials, uploads. Certification cohorts live in course_groups; keep the sensitive classes (exam results, employer billing, participant identity) out of this schema.
  2. Model assets linked to their owning group or workspace.
  3. Validate uploads and store them in the private bucket; link each object to its row.
  4. Authorize downloads by membership.
  5. 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=... 6. Verify: Run the pattern self-test(s) from the example (/p/browser-file-uploads) and your own acceptance checks for the professional training workflow.

Command: ample logs --kind build

Limitations

Cost Estimate

Success Checks

  1. App responds on its public URL
    • Kind: http_get
    • Path: /
    • Expect: ample canary django patterns
  2. Browser-file-uploads self-test from the example.
    • Kind: http_get
    • Path: /p/browser-file-uploads
    • Expect: see the pattern fixture checks

Evidence Summary