page:recipes:recruiting tracker:flask:private attachments

Host Recruiting Tracker with Flask: Private Attachments

Deploy a recruiting tracker built with Flask on Ample using the private document library pattern. Compute runs the app in an isolated microVM behind a public HTTPS URL, a managed PostgreSQL 16 database is auto-provisioned and injected as DATABASE_URL, a private S3-compatible bucket holds objects with credentials delivered as encrypted environment variables. Verified on Flask: 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). Not separately tested: your identity integration and role assignments; treat the recruiting tracker-specific behavior as your application code.

Summary

Resource Requirements

Prerequisites

  1. A Flask project that builds and starts with the documented commands.
  2. A PostgreSQL driver reading DATABASE_URL at runtime.
  3. A bucket from ample bucket create with its credentials passed as encrypted S3_* environment variables.
  4. An Ample account token with appropriate permissions.

Tested Configuration

Workflow Steps

  1. Build and Start: pip install into .ample/python from requirements.txt, then waitress from app.py reading PORT on the python-3.12 template.
  2. Implement the Pattern on PostgreSQL: Use a role-to-document access model.
  3. Wire Object Storage: Create the bucket(s) and pass credentials as --env values.
  4. Deploy: Run the synchronous deploy command.
  5. Verify: Fetch the live URL and run your own checks.

Success Checks

Limitations

Cost Estimate

Evidence Summary

Next Actions