-
Notifications
You must be signed in to change notification settings - Fork 6
System Architecture
Nathan Smith edited this page Nov 15, 2025
·
2 revisions
This overview stitches together the four projects that ship in the main solution and highlights the services/components you will see referenced throughout the wiki.
| Project | Purpose | Key folders |
|---|---|---|
src/Quickfire.Blazor (Surefire.csproj) |
Blazor Server host, REST APIs, SignalR hubs, background workers |
/Domain/* feature areas, /Data EF Core contexts/migrations, /wwwroot assets/prompts/schemas |
src/Quickfire.Desktop (Quickfire.csproj) |
.NET MAUI wrapper that boots the published Blazor host locally |
/Services/SurefireHostService.cs, /MainPage.xaml, /Resources
|
src/Quickfire.Gateway |
Lightweight ASP.NET Core API for external webhooks (RingCentral, SMS, Blastmail) |
/Controllers/*, /Services/*, /Hubs
|
src/Quickfire.Tray |
Windows tray utility for deep desktop integrtions (Outlook, Word, system commands) |
/System, /Methods, /Resources
|
- Server/Web – Standard ASP.NET Core host, SQL Server by default. Enables background services (Blastmail, TaskAgents, Gateway).
-
Desktop – Controlled via
SUREFIRE_DESKTOP_RUNTIME/environment detection. Publishes intoBuild/Desktop/Surefire/and runs under MAUI WebView; some services (Blastmail, Gateway) are disabled for offline use. -
Hybrid – Desktop MAUI + Gateway service for telephony/webhooks (RingCentral) and Tray for OS-level tasks.
RuntimeFeatureFlags(registered inProgram.cs) toggle features per environment.
-
StateService (
src/Quickfire.Blazor/Domain/Shared/Services/StateService.cs) keeps long-lived caches (carriers, policies, DocuSign, payments) and surfaces status rings in the UI. -
IntegrationKeyValueService (
Domain/Integrations/Services/IntegrationKeyValueService.cs) stores encrypted integration secrets. Providers (e.g.,DocuSignSettingsProvider,RingCentralSettingsProvider) cache per-integration configs. -
OpenAIAgent + NavigationAgent (
Domain/Agents/Services) run Semantic Kernel withgpt-4.1, Qdrant embeddings, streaming handlers, and database query safeguards. -
OpenAIPro (
Domain/Shared/Services/OpenAIPro.cs) powers SmartPaste, Proposler extraction, and long-running JSON-first LLM tasks withAttachmentServicepersistence. -
Task Agents Framework (
Domain/Agents/TaskAgents/*) orchestrates declarative business actions triggered from Enhanced AI Chat or action buttons. - AttachmentService and AttachmentUploaderApi handle network drive/Azure/local storage with hashed file names + thumbnails.
- EF Core context lives in
Data/ApplicationDbContext*.cswith dual migrations:MigrationsLocal(SQLite) andMigrationsRemote(SQL Server). - Integrations register in
Program.cs: DocuSign, ePayPolicy, RingCentral, Azure Form Recognizer (AddFormRecognitionIntegration), Microsoft Graph (AddGraphIntegration), Embedding/Qdrant clients, and Outlook interop. -
Quickfire.Gatewayexposes/api/sms/webhook,/api/blastmail/track, etc., forwarding to the Blazor host via SignalR hubs (Surefire.Hubsin the main app). -
Quickfire.Traylistens to Ember commands (SignalR) and executes Word/Outlook/Windows automations (seeMethods/WordControl.cs,System/SystemTray.cs).
-
UI – Razor components (e.g.,
Domain/Clients/Pages/Clients.razor) use Fluent UI + Syncfusion controls wired with binding conventions in reference/Binding-Events. -
Services – Domain services (Clients, Renewals, Proposals, Accounting) live under
Domain/*/Services. They depend onApplicationDbContext, integration providers, and state caches. -
Background – Hosted services live in
/InfrastructureandProgram.cs(e.g.,AttachmentWatcher,BlastmailWorker). Desktop mode disables long-running workers via feature flags. -
Desktop Loop – MAUI host starts, unpacks
Build/Desktop/Surefire, bootsSurefire.exe, and displays the WebView once/responds. Tray + Gateway bridge native OS events back into the Blazor UI.
- Logging wired through
Serilog? (if configured) and built-inILogger. Seeappsettings.Development.jsonfor agent-specific log levels (e.g.,Surefire.Domain.Agents.Services.OpenAIAgent). -
StateService.UpdateStatus("...", isBusy)surfaces user-facing progress, notably for long AI runs. -
Quickfire.Tray/System/SystemTray.cswrites to%LOCALAPPDATA%\Surefire\TrayLog.txtfor troubleshooting Word/Outlook commands.
Keep this page handy when updating docs: cite the relevant file paths from this map so engineers can jump from wiki to code immediately.
Quickfire Wiki • Generated from Qf-Docs/wiki • Last updated: 2025-11-14.
See the main repo for README + issues.
- Home
- Getting Started
- System Architecture
- Release Notes
- Features
- Agents & AI
- Reference
- Guides
- Integrations
- Archive