-
Notifications
You must be signed in to change notification settings - Fork 0
Refactor: HttpClient usage; update deployment docs #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -184,7 +184,7 @@ Add these application settings: | |
| | `ANTHROPIC_API_KEY` | `your-anthropic-api-key` | Anthropic Claude API key (for AI chatbot) | | ||
| | `BREVO_SMTP_KEY` | `your-brevo-smtp-key` | Brevo SMTP relay key | | ||
| | `BREVO_SMTP_LOGIN` | `your-smtp-login@smtp-brevo.com` | Brevo SMTP login | | ||
| | `N8N_WEBHOOK_URL` | `https://cloudzen-n8n.pikapod.net/webhook/appointments` | n8n appointment booking webhook — Production URL only, workflow must be activated (required — 502 if unset). Booking DB (Neon Postgres) is configured inside n8n itself, not an Azure resource. | | ||
| | `N8N_WEBHOOK_URL` | `https://cloudzen-n8n.pikapod.net/webhook/appointments` | n8n appointment booking webhook — Production URL only, workflow must be activated (required — 502 if unset). Booking DB (Neon Postgres) is configured inside n8n itself, not an Azure resource. See [../08-N8N/appointment-system-v3.md](../08-N8N/appointment-system-v3.md) for workflow setup. | | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win Correct the missing-configuration status code.
🤖 Prompt for AI Agents |
||
| | `KEY_VAULT_ENDPOINT` | `https://cloudzenvault.vault.azure.net/` | *(Optional)* Azure Key Vault URI for secrets management | | ||
| | `EmailSettings:FromEmail` | `cloudzen.inc@gmail.com` | Sender email address | | ||
| | `EmailSettings:CcEmail` | `softevolutionsl@gmail.com` | CC email address | | ||
|
|
@@ -604,4 +604,4 @@ CloudZen/ | |
|
|
||
| --- | ||
|
|
||
| *Last updated: June 2025 -- Updated Function App name, URLs, CORS configuration (multi-level), Key Vault integration, Polly rate limiting, environment-specific Blazor config, security headers, file structure, and local development setup.* | ||
| *Last updated: 2026-07-25 -- Added cross-reference to n8n workflow docs (08-N8N/appointment-system-v3.md) for N8N_WEBHOOK_URL.* | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,9 @@ | ||
| # Azure Deployment Quick Reference | ||
|
|
||
| > **See also:** [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) · [AZURE_FUNCTION_DEPLOYMENT.md](AZURE_FUNCTION_DEPLOYMENT.md) | ||
| > | ||
| > **Last synced: 2026-07-25** | ||
|
|
||
| ## ⚡ Quick Start Checklist | ||
|
|
||
| ### 🚨 Before You Begin - CRITICAL | ||
|
|
@@ -29,21 +33,10 @@ | |
| - [ ] Configure CORS (allow your Static Web App domain) | ||
|
|
||
| ### 3️⃣ Azure Functions Backend (REQUIRED for secure operations) | ||
| ```bash | ||
| # Create the backend project: | ||
| dotnet new func -n CloudZen.Api | ||
| cd CloudZen.Api | ||
| dotnet add package Azure.Identity | ||
| dotnet add package Azure.Extensions.AspNetCore.Configuration.Secrets | ||
| dotnet add package MailKit | ||
| dotnet add package Polly | ||
| ``` | ||
| - [ ] Create `SendEmailFunction.cs` (see `DEPLOYMENT_GUIDE.md` section 5) | ||
| - [ ] Create `ChatFunction.cs` (AI chatbot proxy to Anthropic Claude) | ||
| - [ ] Deploy to Azure Function App (Consumption plan) | ||
| - [ ] Enable Managed Identity | ||
| - [ ] Link to Static Web App (in Azure Portal: Static Web App > APIs) | ||
| - [ ] Set `ANTHROPIC_API_KEY` in Azure Function App settings | ||
| - [x] Backend created and deployed (`CloudZen.Api`, Consumption plan) — see [AZURE_FUNCTION_DEPLOYMENT.md](AZURE_FUNCTION_DEPLOYMENT.md) for setup | ||
| - [x] `SendEmailFunction.cs` and `ChatFunction.cs` deployed | ||
| - [x] Managed Identity enabled, linked to Static Web App | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win Correct the Managed Identity relationship. The deployment guide documents a system-assigned identity on the Function App with Key Vault access; it does not establish a Managed Identity link to the Static Web App. Reword this item to reflect the actual Function App/Key Vault configuration. 🤖 Prompt for AI Agents |
||
| - [ ] Verify all env vars set in Function App settings — see [AZURE_FUNCTION_DEPLOYMENT.md](AZURE_FUNCTION_DEPLOYMENT.md#azure-portal-configuration) | ||
|
|
||
| ### 4️⃣ Azure Key Vault Setup | ||
| ```bash | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: MyTeamForDev/CloudZen
Length of output: 159
🏁 Script executed:
Repository: MyTeamForDev/CloudZen
Length of output: 50378
🏁 Script executed:
Repository: MyTeamForDev/CloudZen
Length of output: 7166
🏁 Script executed:
Repository: MyTeamForDev/CloudZen
Length of output: 4282
🏁 Script executed:
Repository: MyTeamForDev/CloudZen
Length of output: 7526
Configure the typed HTTP clients from the local functions URL.
builder.Configuration["{Service}:ApiBaseUrl"] = functionsLocalUrlis set, but the typed clients overrideBaseAddresstobuilder.HostEnvironment.BaseAddress. SinceAppointmentServicesends relative requests andApiEmailService/ChatbotServicecompose endpoint paths fromApiBaseUrl, these requests will be routed to the WebAssembly origin in development. Set each typed client’sBaseAddressfrom itsApiBaseUrl; use the absoluteResumeUrlforResumeService.🤖 Prompt for AI Agents