page:blueprints:sports clubs:member portal:django

Sports clubs: member portal using Django

Summary

A member portal blueprint for sports clubs built with Django on Ample. Domain schema:

Public information includes teams, seasons and fixtures, venues, and membership fees. Kept out of scope until handling is reviewed: minor members and medical notes, safeguarding records. Medical and safeguarding records are sensitive; only schedules and coaching materials are modeled. 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).

Resource Requirements

Infrastructure Requirements

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

Framework

Django

Workload

Member portal

Industry

Sports clubs

Release Status

published

Support Status

verified

Execution Status

ready

Prerequisites

  1. 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)
  2. A PostgreSQL driver reading DATABASE_URL (auto-provisioned when omitted)
  3. Bucket credentials from ample bucket create passed as encrypted S3_* environment variables
  4. A review of which sports clubs data classes may be handled at all; this blueprint models public information only

Workflow Steps

  1. Model the sports clubs domain
    Create the tables course_groups, memberships, sessions, materials, document_access. Teams and classes live in course_groups; keep the sensitive classes (minor members and medical notes, safeguarding records) out of this schema.

  2. Workflow step 1
    Model groups, memberships, and roles

  3. Workflow step 2
    Authorize access to materials by membership and role (401, 403 negative tests)

  4. Workflow step 3
    Store materials in the private bucket and stream them through the app

  5. Workflow step 4
    Deploy and verify the negative tests and an authorized download

  6. Deploy
    Run the synchronous deploy once and read the result. Re-running with no change is a no-op.

  7. Verify
    Run the pattern self-test(s) from the example (/p/private-document-library) and your own acceptance checks for the sports clubs workflow.

Examples

Success Checks

Limitations

Cost Estimate

Currency Monthly Amount Authoritative Basis
USD 10.0 true size prices from pricing.toml (loaded by the API) at build revision 1ac5595375130d45290090e82ed0f554ccd45405-dirty.

Components

  1. App server: size s-1vcpu-1gb, quantity 1.0, monthly amount 5.0
  2. Managed PostgreSQL database: size s-1vcpu-1gb, quantity 1.0, monthly amount 5.0

Note: Always-on monthly price of the tested sizes; apps and databases auto-pause when idle. Buckets are allocation-priced per quota and not included.

Evidence Summary

Last Verified At

2026-09-20T03:31:44Z

Unknowns

Formats

Next Actions