How adrian-hue-pixel/trendtrace works
TrendTrace is a FastAPI backend for exploring rainfall and aerosol data, exporting CSV, and producing downloadable PDF Discovery Reports. The main workflow is a client request routed through the API to validated analysis backed by a selected data store; report requests assemble those results and render a PDF. The README documents additional analysis capabilities whose routes are not fully represented in the excerpts. Edges below rely on README statements, visible application wiring, and SOURCE INDEX references; unsampled implementation details are not assumed.
Main entry points: main.py App bootstrap · reports.py Report endpoints · store.py Data store · csv_export.py CSV builder
Components 28
API and contracts
- App bootstrap
backend/app/main.py - Core schemas
backend/app/schemas.py - Advanced schemas
backend/app/advanced_schemas.py - Health endpoint
backend/app/routers/health.py - Metadata endpoints
backend/app/routers/metadata.py - Analysis endpoints
backend/app/routers/advanced.py - Response envelopes
backend/app/routers/common.py
Data and analysis
- Data store
backend/app/services/store.py - Request validation
backend/app/services/validation.py - Analysis services
backend/app/services/advanced.py - Mock datasets
data/mock
Exports and reports
- CSV endpoint
backend/app/routers/export.py - CSV builder
backend/app/services/csv_export.py - CSV codec
backend/app/services/csv_codec.py - Report endpoints
backend/app/routers/reports.py - Report assembly
backend/app/reports/service.py - Report content
backend/app/reports/content.py - PDF renderer
backend/app/reports/pdf.py - Report charts
backend/app/reports/charts.py - Report checks
backend/app/reports/checks.py - Report formatting
backend/app/reports/formatting.py - PDF file store
backend/app/reports/store.py - Report AI hooks
backend/app/reports/hooks.py
Runtime support
- Report rate limits
backend/app/services/rate_limit.py - Configuration
backend/app/config.py - Error handling
backend/app/errors.py - Error documentation
backend/app/openapi_errors.py
Other components
- API client
Connections 42
- API client → App bootstrap: sends request
README.md - App bootstrap → Health endpoint: registers router
backend/app/main.py - App bootstrap → Metadata endpoints: registers router
backend/app/main.py - App bootstrap → Analysis endpoints: registers router
backend/app/main.py - App bootstrap → CSV endpoint: registers router
backend/app/main.py - App bootstrap → Report endpoints: registers router
backend/app/main.py - App bootstrap → Data store: selects at startup
backend/app/main.py - App bootstrap → Configuration: loads settings
backend/app/main.py - App bootstrap → Error handling: registers handlers
backend/app/main.py - App bootstrap → Error documentation: installs schema
backend/app/main.py - Health endpoint → Data store: reads provenance
backend/app/routers/health.py - Metadata endpoints → Data store: reads metadata
backend/app/routers/metadata.py - Analysis endpoints → Analysis services: requests analysis
backend/app/routers/advanced.py - Analysis endpoints → Response envelopes: wraps response
backend/app/routers/advanced.py - Analysis services → Data store: reads dataset
backend/app/services/advanced.py - Analysis services → Request validation: uses rules
backend/app/services/advanced.py - Response envelopes → Core schemas: builds envelope
backend/app/routers/common.py - Response envelopes → Data store: reads provenance
backend/app/routers/common.py - Data store → Mock datasets: serves fixtures
README.md - CSV endpoint → CSV builder: builds export
backend/app/routers/export.py - CSV builder → CSV codec: encodes cells
backend/app/services/csv_export.py - CSV builder → Analysis services: gets anomaly data
backend/app/services/csv_export.py - CSV builder → Data store: reads dataset
backend/app/services/csv_export.py - CSV builder → Request validation: validates selection
backend/app/services/csv_export.py - Report endpoints → Report assembly: assembles report
backend/app/routers/reports.py - Report endpoints → PDF renderer: renders PDF
backend/app/routers/reports.py - Report endpoints → PDF file store: saves or loads PDF
backend/app/routers/reports.py - Report endpoints → Report AI hooks: requests AI summary
backend/app/routers/reports.py - Report endpoints → Report rate limits: limits requests
backend/app/routers/reports.py - Report assembly → Data store: collects results
backend/app/reports/service.py - Report assembly → Analysis services: requests analyses
backend/app/reports/service.py - Report assembly → Request validation: checks coverage
backend/app/reports/service.py - Report assembly → Report content: assembles content
backend/app/reports/service.py - PDF renderer → Report content: renders content
backend/app/reports/pdf.py - PDF renderer → Report charts: uses charts
backend/app/reports/pdf.py - PDF renderer → Report checks: uses checks
backend/app/reports/pdf.py - PDF renderer → Report formatting: formats values
backend/app/reports/pdf.py - Report AI hooks → Report checks: checks availability
backend/app/reports/hooks.py - Report AI hooks → Report content: reads report content
backend/app/reports/hooks.py - Report endpoints → Advanced schemas: accepts report contract
backend/app/routers/reports.py - Analysis endpoints → Advanced schemas: uses result models
backend/app/routers/advanced.py - App bootstrap → Core schemas: uses API models