Integrations and data flows
Azure services
Section titled “Azure services”Azure App Service
Section titled “Azure App Service”- Hosts the API and site deployments.
- GitHub Actions publish web bundles or container updates into Azure-hosted environments.
Azure Blob Storage
Section titled “Azure Blob Storage”- Stores uploaded photo bytes.
- Stores avatar bytes.
- Does not replace the relational data store.
Azure Database for PostgreSQL
Section titled “Azure Database for PostgreSQL”- Holds structured platform data.
- Acts as the system of record for photos, profiles, swings, courses, and logs.
Azure AI Foundry
Section titled “Azure AI Foundry”The long-term AI architecture is intentionally split into stages:
- Lie Analysis Agent classifies the lie and returns structured observations.
- Stance Recommendation Agent combines the lie result with distance, swing averages, and other context to produce actionable guidance.
External integrations
Section titled “External integrations”OpenGolf
Section titled “OpenGolf”Used for course discovery, import, and refresh. The API adapts this data into the platform’s course entities.
Microsoft Entra
Section titled “Microsoft Entra”Used for identity across golfer-facing surfaces and staff workflows.
Speech synthesis
Section titled “Speech synthesis”Used to convert the final recommendation into immediate spoken guidance.
Data-flow patterns
Section titled “Data-flow patterns”Upload flow
Section titled “Upload flow”Client -> /api/photos/upload -> PhotoService -> Blob Storage + PostgreSQL | +-> ShotAnalysisPipeline -> Foundry / fallbackProfile flow
Section titled “Profile flow”Client -> /api/profiles/{userId} -> ProfileService -> EfProfileRepository -> PostgreSQLSwing import flow
Section titled “Swing import flow”CSV upload -> SwingDataService -> parser + summaries -> PostgreSQLDesign constraint
Section titled “Design constraint”When a new integration is added, prefer a narrow infrastructure adapter plus an application service boundary. That keeps vendor-specific concerns out of controllers and domain entities.