### Property Management: Reporting Dashboard Using Django

A reporting dashboard blueprint for property management built with Django on Ample.

#### Domain Schema:
- **Listings:** rental listings with publishing status (reference, address, unit, rent, publishing_status, agency_id)
- **Agencies:** management offices (name, license_number, portfolio_size)
- **Maintenance Vendors:** vendors per office (name, trade, agency_id, status)
- **Reports:** portfolio reports per office (agency_id, period, object_key, generated_at)
- **Exports:** generated artifacts and who may download them (id, definition, object_key, row_count, generated_at, authorized_role)

**Public Information:** available rentals, office contacts, application process.
Kept out of scope until handling is reviewed: tenant identity and payment history, inspection reports with personal data. Tenant data is personal and often regulated; only published listings and office-scoped reporting are modeled.

#### Technical Basis Verified on Django:
An export query rendered to a CSV artifact stored with metadata in a private bucket and returned only to an authorized caller (401 without token, export=ok rows=3).

#### Representative Queries:
- Property management: reporting dashboard using Django
- Where can I host Property management: Reporting dashboard built with Django?
- I need a genuinely specialized reporting dashboard workflow covering building/vendor access, maintenance status and property reporting.

#### Resource Requirements:
- primitive:compute
- primitive:postgres
- primitive:s3-compatible-object-storage

#### Infrastructure Requirements:
- **Compute:** Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request.
- **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.
- **S3-Compatible Object Storage:** Buckets are S3-compatible with issued credentials; PutObject and GetObject are verified.

#### 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 property management data classes may be handled at all; this blueprint models public information only

#### Tested Configuration:
- **Template:** python-3.12
- **Runtime:** python
- **Size:** s-1vcpu-1gb
- **Install:** python3 -m pip install --target .ample/python -r requirements.txt
- **Start:** PYTHONPATH=.ample/python:${PYTHONPATH:-} python3 run.py

#### Workflow Steps:
1. **Model the Property Management Domain:** Create the tables listings, agencies, maintenance_vendors, reports, exports.
2. **Workflow Step 1:** Model report definitions scoped to the agency.
3. **Workflow Step 2:** Generate report artifacts from queries and store them with metadata.
4. **Workflow Step 3:** Authorize downloads (401 without identity).
5. **Workflow Step 4:** Deploy and verify an authorized export and the rejected anonymous request.
6. **Deploy:** Run the synchronous deploy once and read the result.
7. **Verify:** Run the pattern self-test(s) from the example (/p/generated-downloads) and your own acceptance checks for the property management workflow.

#### Cost Estimate:
- **Currency:** USD
- **Monthly Amount:** 10.0
- **Basis:** size prices from pricing.toml at build revision.
- **Components:** 
  - App Server: s-1vcpu-1gb (Quantity: 1.0, Monthly Amount: 5.0)
  - Managed PostgreSQL Database: s-1vcpu-1gb (Quantity: 1.0, Monthly Amount: 5.0)

#### Limitations:
- The technical basis (generated downloads on Django) was verified with the pattern fixture; the property management 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. Tenant data is personal and often regulated; only published listings and office-scoped reporting are modeled.

#### Examples:
- **Django Pattern Fixture:** Verified generated downloads basis for this blueprint.

#### Success Checks:
- App responds on its public URL.
- Generated-downloads self-test from the example.
