This is a web app used to reenforce positive behavior. It consists of the following main parts:
- A Blazor WebAssembly app
- .Net API
- Azure Functions integration platform
- Azure Storage Tables
- Azure Storage Queues
Various sensors and activity platforms are integrated:
- Withings, including (but not limited to)
- Body scale
- BPM Core
- The Things Network, Custom LoRaWan devices
graph TD
subgraph Azure
style Azure fill:#DE5089
subgraph Azure Static Web App
StaticClient["Client (Blazor WebAssembly)"] --> WebAppAPI("API (Azure Functions)")
end
subgraph Azure Functions
IntegrationAPI["Integration API"]
QueueTrigger["Queue Trigger"]
end
AzureStorageTables[(Azure Storage Tables)]
AzureStorageQueue[(Azure Storage Queue)]
WebAppAPI --> AzureStorageTables
IntegrationAPI <--> AzureStorageQueue
IntegrationAPI --> AzureStorageTables
AzureStorageQueue --> QueueTrigger
QueueTrigger --> AzureStorageTables
end
subgraph TTN
TTNMQTT --> TTNWebHook
TTNWebHook --> IntegrationAPI
end
Dosette --> TTNMQTT
GotMail --> TTNMQTT
SnowMonitor --> TTNMQTT
HousePlants --> TTNMQTT
subgraph Withings
WithingsNotify[Notify] --> IntegrationAPI
StaticClient --> WithingsAuth[OAuth2] --> IntegrationAPI
WithingsAPI[API] --> WithingsNotify
IntegrationAPI <--> WithingsAPI
IntegrationAPI --> WithingsSubscribe[Subscribe]
WithingsSubscribe --> WithingsNotify
end
WithingsBPM[BPM] --> WithingsAPI
WithingsCore[Weight] --> WithingsAPI
subgraph GitHub
style GitHub fill:#7F9E31
Repo([Code Repository]) -.-> WebAppBuildAction[[Web App Build Action]]
WebAppBuildAction -.-> StaticClient
WebAppBuildAction -.-> WebAppAPI
Repo -.-> IntegrationAPIBuildAction[[Integration API Build Action]]
IntegrationAPIBuildAction -.-> IntegrationAPI
end
Follow the hands-on tutorial to publish a Blazor WebAssembly app and .NET API with Azure Static Web Apps.