Appearance
Applications & APIs
Source: the BlazorApps solution (.NET 9). Hosted on Azure App Service unless noted; deployed by GitHub Actions (one workflow per app, test then prod).
Applications
| Project | Type | What it does | Framework |
|---|---|---|---|
| AdminPortal | Web portal | Internal staff portal (Make Safe, bookings, user settings, schedules, trade search). Blazor Server + MudBlazor, EntraID login. | net10.0 |
| BrowserActions | Service | Browser automation (Browserbase + Playwright) exposed as REST actions and Service Bus consumers (RepairLine sync, etc.). | net10.0 |
| DbMigrations | Tooling | DbUp migrations: numbered run-once scripts plus CREATE OR ALTER programmable objects. | net10.0 |
| FormsPortal | Web portal | Forms for insureds, insurers and trades. Per-form auth: EntraID, sharing code or anonymous. Replaced BookingPortal/ClientPortal/TradePortal (removed 2026-08-19). | net10.0 |
| ITProvisioning | Service | Service Bus consumer that onboards/offboards staff (Entra account, licence, groups via Automation runbook) and notes the FreshDesk ticket. | net10.0 |
| MCPServer | MCP server | Model Context Protocol server for n8n and AI agents; actions suitable for general staff. | net10.0 |
| MCPServerSensitive | MCP server | MCP server with broader data access for automation agents; not for staff. | net10.0 |
| WebAPI | API | ASP.NET Core API behind Basic auth. Controllers for AI, Booking, GeoLocation, OptimoRoute, Prime, Task, WIPUpdate, Endata. Main back end for n8n and Stagehand. | net10.0 |
| WebAPIExcel | API | Reduced-scope API for Excel get/set operations (limits exposure). | net10.0 |
| WebhookReceiver | Service | Generic inbound webhook receiver: validates API-Key and drops the raw call on a Service Bus queue. New source = config only. | net10.0 |
Libraries
| Library | Purpose |
|---|---|
| CommonAIModel | Provider-agnostic AI client (OpenAI Responses API) and prompt templates. |
| CommonAuth | EntraID wrapper; scoped EntraIDUser. |
| CommonDataAccess | Dapper + stored-procedure data access (ISQLDataAccess) and domain data classes. |
| CommonFormsPdf | PDF generation for forms. |
| CommonFreshDesk | FreshDesk ticket API. |
| CommonImaging | Image handling. |
| CommonJSError | Client-side JS error capture. |
| CommonLocation | Geo/location utilities. |
| CommonOptimoRoute | OptimoRoute orders, planning and routes. |
| CommonPrimeAPI | Prime API client and models. |
| CommonServiceBus | Service Bus sender and abstract QueueConsumer background service. |
| CommonSMS | SMS sending. |
| CommonTimeZone | Time zone utilities. |
| CommonWebhooks | Webhook helpers. |
Project references
Arrows show ProjectReference from each application to the libraries it uses.
Deployment targets
| Project | Env | App Service | Slot | In Azure export? |
|---|---|---|---|---|
| AdminPortal | Prod | app-makesafe-prod-australiasoutheast-001 | yes | |
| FormsPortal | Prod | app-form-prod-australiasoutheast-001 | staging | yes |
| WebAPI | Prod | app-webapi-prod-australiasoutheast-001 | yes | |
| WebhookReceiver | Prod | app-webhook-prod-australiasoutheast-001 | yes | |
| ITProvisioning | Prod | app-itprov-prod-australiasoutheast-001 | yes | |
| BrowserActions | Prod | app-browseractions-prod-australiasoutheast-001 | no | |
| MCPServer | Prod | app-mcp-prod-australiasoutheast-001 | yes | |
| WebAPIExcel | Prod | app-excelapi-prod-australiasoutheast-001 | yes | |
| AdminPortal | Test | app-makesafe-test-australiasoutheast-001 | yes | |
| FormsPortal | Test | app-form-test-australiasoutheast-001 | yes |
Design specs
- AppointmentInstanceReconcile-Spec
- BookingKPIAlerts-Spec
- BrowserActions-Actions
- BrowserActions-ag-create-job
- BrowserActions-endata-quote-rates
- BrowserActions-nexus-update-ecd
- BrowserActions-repairline-submit-job
- BrowserActions-repairline-sync-dates
- BrowserActions-Spec
- ClientWIPUpdates-Spec
- EstimatorRelocation-LocationPoints-Spec
- EstimatorSchedule-Spec
- FreshDeskInbox-Spec
- ITProvisioning-Spec
- MfaCodeStore-Spec
- OptimoRoute-Appointments-Bookings-Logic
- PDPIntelligenceReport-Spec
- PrimeMessageNotes-Spec
- PrimeWebhook-Sync-Spec
- RouteDispatch-Spec
- ScheduledProdFormsDeploy-Spec
- TriageBookingRouting-Spec
- TriageEmail-Examples
- TriageForm-QuestionFlow
- TriageInvite-Spec
- TriageReporting-Spec
- VirtualAssessmentBooking-Spec
- WebhookReceiver-Spec

