Systems Architecture Specification (SAS)
Table of Contents
- 1. System Context & Architecture
- 2. Non-Functional Requirements (NFRs)
- 3. Risk & Security Architecture
- 4. Data Architecture & Schema
- 5. Solution Components (The Pillars)
- 6. Front-End Architecture (Experience Cloud)
- 7. Architectural Decision Records (ADRs)
- 8. Contingency & Rollback Plans
- 9. Observability & Glass Box Telemetry
- Appendices
- Appendix A: Engineering Implementation Notes
- Appendix B: API Specification (OpenAPI/Swagger)
- Appendix C: MuleSoft Code, Governance, & Proxy Configuration (Reference)
- Appendix D: Data Dictionary (Detailed Schema)
- Appendix E: Environment Strategy
- Appendix F: Testing Strategy
- Appendix G: Accessibility Strategy (A11y)
- Appendix H: Deployment Architecture View
- Appendix I: Org & Package Structure
- Appendix J: Cloud FinOps Strategy (Phase 8 - Q2 2026)
- Appendix K: Validation Rules & Logic
- Appendix L: Reference Artifacts
- Appendix M: Cross-Cutting Pattern - Dual-Door Integration Strategy
Project: Salesforce Platform Architect Portfolio
Version: 1.0
Owner: Ryan Bumstead
Date: MVP – Q1 2026
1. System Context & Architecture
1.1 Architectural “North Star”
The high-level data flow demonstrating the multi-cloud, API-led strategy.
graph LR
%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 50}}}%%
%% ========= BRAND STYLES =========
classDef user fill:#424242,stroke:#000000,stroke-width:2px,color:#ffffff,font-weight:bold;
classDef sfdc fill:#00A1E0,stroke:#005FB2,stroke-width:2px,color:#ffffff,font-weight:bold;
classDef aws fill:#FF9900,stroke:#CC7A00,stroke-width:2px,color:#ffffff,font-weight:bold;
classDef jira fill:#0052CC,stroke:#003A8F,stroke-width:2px,color:#ffffff,font-weight:bold;
classDef github fill:#24292E,stroke:#000000,stroke-width:2px,color:#ffffff,font-weight:bold;
classDef data fill:#8E24AA,stroke:#4A148C,stroke-width:2px,color:#ffffff,font-weight:bold;
classDef future fill:#FFF3E0,stroke:#FB8C00,stroke-width:2px,stroke-dasharray:5 5;
%% ========= NODES =========
User((User))
LWR[Experience Cloud<br/>LWR]
GQL[Salesforce<br/>GraphQL]
Apex[Apex Runtime]
DB[(Custom Objects)]
AI[Agentforce]
Jira[Jira Cloud API]
GitHub[GitHub API]
Lambda[AWS Lambda<br/>Phase 8]
%% ========= FLOWS =========
User --> LWR
LWR --> GQL
GQL --> DB
LWR --> Apex
Apex <--> AI
Apex --> Jira
Apex --> GitHub
%% ========= FUTURE =========
LWR -.-> Lambda
Lambda -.-> Apex
%% ========= APPLY STYLES =========
class User user;
class LWR,GQL,Apex,AI sfdc;
class DB data;
class Jira jira;
class GitHub github;
class Lambda aws;
%% ========= CRITICAL PATH =========
linkStyle 0,1,2 stroke:#2ECC71,stroke-width:3px;
[!TIP] Scalability Escape Hatch: While this system is constrained to the Free Tier (Developer Edition), the architecture is designed to scale. If traffic exceeded limits, the Phase 8 design moves the heavy lifting (Resume Generation, API Gateway) to AWS Serverless equivalents, allowing the Salesforce Core to remain a lightweight orchestration layer. This ensures the system could handle enterprise-scale traffic with minimal refactoring.
Architecture Implementation Status (MVP – Q1 2026 Launch)
Live MVP (Door 1)
- Native Salesforce GraphQL via lightning/uiGraphQLApi wire adapter
- Apex REST services
- Direct integrations (GitHub, Jira via Named Credentials)
Phase 8 – Q2 2026 (Design Complete)
| Phase | Status | Rationale |
|---|---|---|
| Phase 8 | Design Complete • Implementation Q2 2026 | Fully architected to prove “Scale Up” capability, but deferred for MVP. |
- AWS Lambda Polyglot Gateway (Function URL) — “Door 2”
- Enterprise API governance layer
- Resume Engine offload
1.2 Architecture at a Glance
10-second overview for executive stakeholders.
graph TD
%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 50}}}%%
%% ========= STYLES =========
classDef client fill:#E8F5E9,stroke:#2E7D32,stroke-width:3px,color:#1B5E20,font-weight:bold;
classDef sfdc fill:#E3F2FD,stroke:#1976D2,stroke-width:3px,color:#0D47A1,font-weight:bold;
classDef external fill:#FFF3E0,stroke:#FB8C00,stroke-width:3px,color:#E65100,font-weight:bold;
classDef data fill:#F3E5F5,stroke:#8E24AA,stroke-width:2px,color:#4A148C;
%% ========= LAYERS =========
Browser --> LWR
LWR --> Apex
Apex --> DB
Apex --> AI
Apex --> Jira
Apex --> GitHub
%% ========= APPLY STYLES =========
class Browser,LWR client;
class Apex,AI sfdc;
class DB data;
class Jira,GitHub external;
%% ========= CRITICAL PATH =========
linkStyle 0,1,2 stroke:#2E7D32,stroke-width:4px;
1.3 Key Salesforce Features Used
- Experience Cloud (LWR): High-performance, pixel-perfect frontend.
- Apex REST Services: Custom API layer for external integrations.
- Custom Metadata Types: Configuration management.
- Agentforce: AI grounding and conversational interface.
- Unlocked Packages: Modular deployment strategy.
1.3.1 Technology Selection Rationale
Why specific technologies were chosen over alternatives.
| Requirement | Finalist Options | Selected | Rejection Reason |
|---|---|---|---|
| Frontend Framework | Aura vs. LWR | LWR | Aura’s 3-5s LCP violates UX requirements for public sites. |
| Graph Visualization | Vis.js vs. G6 | AntV G6 | Vis.js lacks native animation API for flow lines (“running edge”). |
| API Documentation | Swagger UI vs. Redoc | Redoc | Redoc’s single-file static HTML works without Node.js server. |
| CI/CD Auth | Username/Pass vs. JWT | JWT | Username/Password is fragile and requires rotation; JWT is headless. |
1.4 Visual Architecture Standard (C4 Model)
All architectural artifacts adhere to the C4 Model (Context, Containers, Components, Code) standard to ensure clarity across abstraction levels.
- Level 1 (Context): Defines system boundaries and interactions (Recruiters, GitHub, Jira, Calendly).
- Level 2 (Container): Illustrates high-level technical building blocks (LWR, Apex Runtime, Data Layer, AI Agent).
- Level 3 (Component): Details LWC composition and event-driven interactions.
- Level 4 (Deployment): Infrastructure view (See Appendix H).
1.5 Quality Gates (Technical Acceptance)
Refer to Guardrails & Executable Governance: Quality Gates & DevOps Discipline for the authoritative definition of LCP and Coverage thresholds.
- Zero PMD Critical Violations (Enforced via sfdx scanner:run in PR checks).
- Reference: See Guardrails & Executable Governance: Quality Gates for authoritative technical acceptance thresholds.
2. Non-Functional Requirements (NFRs)
2.1 Core NFRs
- Availability: Organization persistence maintained via external CI/CD “Keep-Alive” heartbeat (GitHub Actions).
- Maintainability: Codebase governed by automated quality gates (Prettier/PMD) ensuring architectural standards.
- Performance: Target LCP < 2.5s via Static Resource caching and minimal DOM footprint.
- Latency: LCP < 2.5s on 4G networks.
- AI Generation Timeout: 2000ms HTTP timeout (Hard Stop) + 500ms buffer for Apex processing.
- Total CPU Budget: < 5000ms per request (Allocating 50% of the 10,000ms Synchronous Limit to ensure headroom for platform overhead).
- Security: Public access restricted strictly to custom objects. No PII stored.
- Scalability: Data model supports 10,000+ records via indexed Junction Objects.
2.2 Platform Constraints (Developer Edition)
The architecture is designed to operate within the specific limits of the Salesforce Developer Edition.
- Storage Limits: 5MB Data Storage / 20MB File Storage limit requires strict data hygiene and off-platform storage strategies (AWS S3) for artifacts.
- API Limits: 15,000 API requests/24hr requires caching strategies for high-traffic external integrations.
- Guest User: Strict security policies prevent direct standard object access, necessitating a custom schema.
- No Shield: Lack of Event Monitoring requires custom telemetry implementation for analytics.
- Middleware Constraints: Heroku and paid AWS resources are unavailable. Architecture utilizes AWS Free Tier for serverless proxy and storage patterns to demonstrate multi-cloud capabilities without budget impact.
3. Risk & Security Architecture
3.1 Threat Model Summary
- Injection Attacks: Mitigated by strict SOQL bind variable usage.
- Data Exposure: Mitigated by enforcing “Guest User” profiles with strict Field Level Security (FLS) and Sharing Rules. Guest users have Read-Only access to specific Custom Objects only.
- API Abuse: Mitigated by read-only endpoints and hardcoded query limits in the SAPI layer.
- Service Unavailability (AI): Mitigated by a “Triple Fallback” Strategy Pattern. Primary (Agentforce) fails over to Secondary (Gemini API), which fails over to Tertiary (Local Metadata Template). This ensures zero “Dead Ends” for the user.
4. Data Architecture & Schema
This section defines the structured metadata model that underpins portfolio rendering, AI grounding, and cross-object relationships. For the detailed field-level definition, see Appendix D.
4.1 Logical Data Model (Simplified ERD)
What This Diagram Shows: The entity-relationship diagram representing the custom schema. It highlights the use of Junction Objects (
Project_Skill__c) for many-to-many relationships and the persona-based tagging system inExperience_Highlight__c.
erDiagram
Project__c ||--o{ Project_Skill__c : "requires"
Project__c ||--o{ Project_Asset__c : "contains"
Skill__c ||--o{ Project_Skill__c : "is used in"
Skill__c ||--o{ Experience_Skill__c : "is demonstrated in"
Experience__c ||--o{ Experience_Skill__c : "develops"
Experience__c ||--o{ Experience_Highlight__c : "contains"
Testimonial__c {
string Author_Name
string Relationship_Type
string Vibe_Mode
boolean Approved
}
Project__c {
string Name
string Challenge
string Solution
string Business_Value
}
Experience__c {
string Employer
string Role
date Start_Date
}
Experience_Highlight__c {
string Description
picklist Persona_Tag
id Experience__c
}
4.2 Core Entities
Project__c: The central hub. Stores Challenge, Solution, and Business Value narratives.Skill__c: The competency library. Supports polymorphic rendering (SLDS standard icons vs. Custom Brand SVGs).Experience__c: Employment history records (Header Info Only).Experience_Highlight__c: Child object ofExperience__c. Contains granular bullet points tagged by persona (Admin, Dev, Architect) to enable dynamic resume generation.
4.3 Junction Objects (The Glue)
Project_Skill__c: Connects Skills to Projects (e.g., linking “Flow” to “MCC Employer Hub”).Experience_Skill__c: Connects Skills to Job History.
4.4 Asset Management
Project_Asset__c: Stores references to visual artifacts (Flowcharts, Dashboards) to decouple heavy media from the Project record itself.
4.5 Social Proof Engine (Gamified Data)
Testimonial__c: Stores structured feedback.Author_Name__c(Text): Stores the name of the submitter. Note: StandardContactlookups are avoided to ensure Guest User compatibility.Relationship_Type__c(Picklist): Manager, Peer, Client, Recruiter, Fan/Visitor.Context__c(Text/Picklist): Dynamic sentence fragments (e.g., “Absolute Beast”, “Saved our Bacon”).Vibe_Mode__c(Picklist): Professional vs. Casual (Controls display logic).Approved__c(Checkbox): Default false. Security gate for public display.
4.6 Data Security Matrix
The following matrix defines the CRUD and Field Level Security (FLS) settings enforced by the Profile and Permission Set structure.
| Object | Admin (System) | Guest User (Public) | Integration User (API) |
|---|---|---|---|
Project__c |
CRED / Full | Read-Only | Read-Only |
Experience__c |
CRED / Full | Read-Only | Read-Only |
Experience_Highlight__c |
CRED / Full | Read-Only | Read-Only |
Skill__c |
CRED / Full | Read-Only | Read-Only |
Testimonial__c |
CRED / Full | No Access (Handled via Apex) | Read-Only |
GitHub_Cache__c |
CRED / Full | No Access (System Only) | No Access |
Portfolio_Config__mdt |
CRED / Full | Read-Only (via App) | Read-Only |
[!NOTE] Guest User access to
Testimonial__crecords is strictly controlled via theSAPITestimonialApex class which applies the “Vibe Mode” and “Approved” filters before returning data to the LWR site.
5. Solution Components (The Pillars)
The system is segmented into five distinct logical capabilities, each demonstrating a specific architectural discipline. Pillar Relationships: Pillar A (Business) → Pillar B (Consulting) → Pillar C (Integration) → Pillar D (AI) → Pillar E (DevOps)
5.1 Pillar A: Business Architecture (Employer Hub)
- Objective: Demonstrate Business Analysis and Process Mapping.
- Artifacts: Sanitized Process Flow Diagrams and Executive Dashboard mockups.
- Integration: Assets mapped via
Project_Asset__cfor gallery rendering. - Component:
c-schema-visualizer - Data Source: Apex Schema.getGlobalDescribe() ensures the diagram never drifts from the actual deployment.
- Reuse Signal: Reuses the AntV G6 library imported for Pillar D, demonstrating efficient asset management and component reusability.
5.2 Pillar B: Pre-Sales Consultancy (Nonprofit Literacy Solutions)
- Objective: Demonstrate ROI analysis and Solution Design.
- Artifacts: Comparative Decision Matrix (NPSP + PMM vs. Education Cloud) and Video Prototype.
5.3 Pillar C: Work Experience Verification API (Twin API Pattern)
- Objective: Demonstrate Enterprise Integration Patterns and Developer Experience (DX).
- Design: OpenAPI Specification (OAS 3.0) hosted on GitHub.
- Implementation: Native Apex REST Class (
SAPIExperience). - Technical Detail: For the complete breakdown of the caching strategy, caching patterns, and API tooling, refer to the Technical Guide: Integration Service Implementation.
5.4 Pillar D: AI & Innovation (Agentforce)
- Objective: Demonstrate Hybrid Search (Vector + Keyword) and RAG architecture.
- Mechanism: Agentforce Service Agent grounded on Data 360 DMOs (Data Model Objects) rather than direct CRM objects.
- Architecture:
- Ingestion:
Project__candExperience__crecords are ingested into Data 360 via CRM Connector. - Context Layer: A specific “Portfolio Context” Search Index is built from these DMOs.
- Retrieval: Agentforce queries the Search Index to generate responses, decoupling the AI reasoning layer from the transactional database (See ADR-011).
- Ingestion:
- Mirror Mode: System instruction configured to reveal the underlying system prompt and SOQL logic for transparency.
5.4.1 Feature Spotlight: Generative Cover Letter Engine
To demonstrate practical Application of RAG (Retrieval-Augmented Generation), the portfolio includes a functional tool for recruiters.
- The Concept: Instead of a static “About Me,” recruiters input their Company Name and Job Title. The system generates a custom cover letter explaining why this specific candidate matches that specific role.
- The Architecture:
- Input Layer: LWC Form (
c-cover-letter-generator) captures context (e.g., “Senior Architect”, “Financial Services”). - Retrieval Layer: Agentforce Topic executes a SOQL query against
Project__candExperience__cto find records matching the input keywords. - Generation Layer: The LLM synthesizes the retrieved project data into a 3-paragraph professional narrative.
- Generation Strategy
- To demonstrate high availability, the generation layer utilizes an Apex interface (IAIGenerationService) with a dispatcher implementing the Strategy Pattern.
- Path 1 (Gold): Agentforce Service Agent (Data 360 Grounding).
- Path 2 (Silver): Google Gemini Flash 1.5 API (Fallback if Path 1 times out > 2s).
- Path 3 (Bronze): Deterministic Local Template (Metadata Fallback if API blackout).
- To demonstrate high availability, the generation layer utilizes an Apex interface (IAIGenerationService) with a dispatcher implementing the Strategy Pattern.
- Input Layer: LWC Form (
Click to view Sequence Diagram
> _What This Code Does: This sequence diagram illustrates the "Strategy Pattern" dispatcher logic. It shows how the system attempts the Gold Path (Agentforce) first, fails over to Sliver (Gemini) if necessary, and finally falls back to the Bronze (Local Template) if all APIs are offline._ ```mermaid sequenceDiagram participant UI as LWC participant Dispatcher as ContentGenerationController participant CB1 as CircuitBreaker Agentforce participant CB2 as CircuitBreaker Gemini participant Agentforce participant Gemini participant Local as LocalTemplateService UI->>Dispatcher: generate(prompt, context) Dispatcher->>CB1: allowRequest()? alt Circuit 1 Closed Healthy Dispatcher->>Agentforce: generate() alt Success Agentforce-->>Dispatcher: AIResponseWrapper success agentforce content 850ms Dispatcher-->>UI: Return Path 1 Gold else Timeout/Error Agentforce-->>Dispatcher: Exception CB1->>CB1: recordFailure() Note over Dispatcher: Failover to Path 2 end else Circuit 1 Open Broken Note over Dispatcher: Skip Agentforce end opt If Path 1 Failed or Skipped Dispatcher->>CB2: allowRequest()? alt Circuit 2 Closed Healthy Dispatcher->>Gemini: generate() alt Success Gemini-->>Dispatcher: AIResponseWrapper success gemini content 1200ms Dispatcher-->>UI: Return Path 2 Silver else Timeout/Error Gemini-->>Dispatcher: Exception CB2->>CB2: recordFailure() Note over Dispatcher: Failover to Path 3 end else Circuit 2 Open Broken Note over Dispatcher: Skip Gemini end end opt If Path 2 Failed or Skipped Dispatcher->>Local: generate() Local-->>Dispatcher: AIResponseWrapper fallback local_template content 0ms Dispatcher-->>UI: Return Path 3 Bronze Note over UI: Display Offline Mode Badge Note over Dispatcher: Log GA4 Event ai_fallback_usage end ```- Privacy: Inputs are processed transiently and never stored in Salesforce.
5.4.2 Optional Edge Layer Integration (Future Scope)
Cloudflare Workers provides a fourth path for content generation. The Worker acts as an AI proxy and edge cache that reduces total cost, decreases latency, and shields Salesforce from external API rate limits. Integration uses the same IAIGenerationService interface with a new CloudflareService provider class.
5.5 Pillar E: Agile Delivery & DevOps (Roadmap)
- Objective: Demonstrate ALM, CI/CD Maturity, and External System Integration.
- Tooling: Atlassian Jira + GitHub Actions (CI/CD).
- Technical Detail: For the integration architecture (JiraService) and Platform Event subscription model, refer to the Technical Guide: Jira Integration.
- Mechanism: The
c-smart-checklistcomponent subscribes to theGovernance_Event__ePlatform Event. - Workflow: When the CI/CD pipeline (GitHub Actions) completes a successful deployment, it upserts a record or publishes an event via the Salesforce CLI. The LWC receives this event and automatically checks the “Green Build Badge” box on the UI.
- Architectural Signal: This proves the candidate understands the Streaming API and Event-Driven Architecture.
5.5.1 The Governance Model
For the detailed “Three-Gate Approval Process” (Technical Feasibility, Security, DoR) governing these pillars, refer to Guardrails & Executable Governance: The Three-Gate Approval Process.
- Acceptance criteria defined (Gherkin syntax preferred).
- Test data generation script written.
- Rollback plan documented (Section 9.X).
6. Front-End Architecture (Experience Cloud)
The front-end uses a lightweight, high-performance delivery model through Lightning Web Runtime (LWR), avoiding Aura events and heavy DOM frameworks.
6.1 Technology Stack
- Framework: LWR.
- Domain Strategy: Custom CNAME (RyanBumstead.com), 301 redirect to https://rbumstead-dev-ed.develop.my.site.com/portfolio/ since free development edition orgs do not have the ability to set up custom domains.
- Navigation Strategy: “5-Minute Tour” section embedded in Hero Banner.
6.2 Lightning Web Components (LWC)
c-hero-banner: Includes “How to Evaluate Me” navigation guide.c-testimonial-submit: “Mad Libs” style sentence builder.c-api-tester: Developer console LWC utilizing fetch() to exercise endpoints.c-changelog: Displays live commit history.c-skill-network: Visualizes Junction Objects via AntV G6.c-code-viewer: Fetches raw source code via Prism.js.c-resume-builder: Client-side PDF generation via jsPDF.c-roadmap-viewer: Performs real-time REST callout to Jira API.c-footer: Contains GitHub Actions Badge.
[!TIP] Technical Implementation: For detailed performance strategies (lazy-loading), mobile fallbacks, and accessibility patterns for these components, please refer to the Technical Guide: Frontend Component Logic.
7. Architectural Decision Records (ADRs)
Full architectural decisions are documented in the docs/adr/ directory.
Click to view full list of Architectural Decision Records (ADRs)
| ID | Title | Status | | :------------------------------------------------------------------------------------- | :-------------------------------------------------------------- | :----------------------- | | [ADR-001](/salesforce-platform-architect-portfolio/adr/001-experience-cloud-lwr-vs-aura.html) | Experience Cloud (LWR) vs. Aura | Accepted | | [ADR-002](/salesforce-platform-architect-portfolio/adr/002-custom-objects-vs-standard-objects.html) | Custom Objects vs. Standard Objects | Accepted | | [ADR-003](/salesforce-platform-architect-portfolio/adr/003-apex-rest-vs-external-service.html) | Apex REST vs. External Service | Accepted | | [ADR-004](/salesforce-platform-architect-portfolio/adr/004-static-resource-code-rendering.html) | Static Resource Code Rendering | Accepted | | [ADR-005](/salesforce-platform-architect-portfolio/adr/005-gamified-testimonial-ui.html) | Gamified Testimonial UI | Accepted | | [ADR-006](/salesforce-platform-architect-portfolio/adr/006-jwt-bearer-flow-for-ci-cd.html) | JWT Bearer Flow for CI/CD | Accepted | | [ADR-007](/salesforce-platform-architect-portfolio/adr/007-github-api-server-side-caching.html) | GitHub API Server-Side Caching | Accepted | | [ADR-008](/salesforce-platform-architect-portfolio/adr/008-jira-integration-vs-agile-accelerator.html) | Jira Integration vs. Agile Accelerator | Accepted | | [ADR-009](/salesforce-platform-architect-portfolio/adr/009-granular-resume-data-model.html) | Granular Resume Data Model | Accepted | | [ADR-010](/salesforce-platform-architect-portfolio/adr/010-visualization-engine-vis-js-vs-antv-g6.html) | Visualization Engine (Vis.js vs. AntV G6) | Accepted | | [ADR-011](/salesforce-platform-architect-portfolio/adr/011-context-grounding-strategy-direct-crm-vs-data-360.html) | Context Grounding Strategy (Direct CRM vs. Data 360) | Accepted | | [ADR-012](/salesforce-platform-architect-portfolio/adr/012-guest-user-security-restriction-rules.html) | Guest User Security (Restriction Rules) | Accepted | | [ADR-013](/salesforce-platform-architect-portfolio/adr/013-structured-logging-framework-nebula-logger.html) | Structured Logging Framework (Nebula Logger) | Accepted | | [ADR-014](/salesforce-platform-architect-portfolio/adr/014-deferred-telemetry-loading-performance.html) | Deferred Telemetry Loading (Performance) | Accepted | | [ADR-015](/salesforce-platform-architect-portfolio/adr/015-strategy-pattern-for-generative-ai.html) | Strategy Pattern for Generative AI | Accepted | | [ADR-016](/salesforce-platform-architect-portfolio/adr/016-cloudflare-worker-as-edge-ai-proxy.html) | Cloudflare Worker as Edge AI Proxy | Deferred to V2.0 | | [ADR-017](/salesforce-platform-architect-portfolio/adr/017-system-api-security-and-dual-sided-auth-pattern.html) | System API Security & Dual-Sided Auth Pattern | Accepted | | [ADR-018](/salesforce-platform-architect-portfolio/adr/018-finops-constraint-aws-lambda-function-urls-vs-api-gateway.html) | FinOps Constraint – AWS Lambda Function URLs vs. API Gateway | Accepted | | [ADR-019](/salesforce-platform-architect-portfolio/adr/019-executable-governance-platform-events-for-documentation-logic.html) | Executable Governance – Platform Events for Documentation Logic | Accepted | | [ADR-020](/salesforce-platform-architect-portfolio/adr/020-mobile-performance-static-svg-fallback-strategy.html) | Mobile Performance – Static SVG Fallback Strategy | Accepted | | [ADR-021](/salesforce-platform-architect-portfolio/adr/021-native-graphql-door-1-vs-apex-rest-for-ui.html) | Native GraphQL (Door 1) vs. Apex REST for UI | Accepted | | [ADR-022](/salesforce-platform-architect-portfolio/adr/022-resilience-engineering-resilience-simulation-toggle.html) | Resilience Engineering – Resilience Simulation Toggle | Accepted | | [ADR-023](/salesforce-platform-architect-portfolio/adr/023-client-side-pdf-generation-jspdf-for-mvp.html) | Client-Side PDF Generation (jsPDF) for MVP | Accepted (Transitionary) | | [ADR-024](/salesforce-platform-architect-portfolio/adr/024-twin-api-pattern-contract-first-parity.html) | Twin API Pattern – Contract-First Parity | Accepted | | [ADR-025](/salesforce-platform-architect-portfolio/adr/025-papi-fan-out-throttling-capacity-planning.html) | PAPI Fan-Out Throttling (Capacity Planning) | Accepted | | [ADR-026](/salesforce-platform-architect-portfolio/adr/026-header-based-api-versioning-strategy.html) | Header-Based API Versioning Strategy | Accepted |8. Contingency & Rollback Plans
8.1 Deployment Failure
- Symptom: GitHub Actions deploy.yml job fails or turns red.
- Detection: Automated email notification from GitHub Actions; missing PR comment on Pull Request.
- Mitigation:
- Check GitHub Action logs for specific metadata error.
- If environment issue: Manually deploy via CLI: sf project deploy start.
- Detection: Automated email notification from GitHub Actions.
- Rollback: See Maintenance & Operations Guide: Disaster Recovery for the definitive rollback procedure.
8.2 Agentforce Unavailable
- Symptom: Agentforce Service Agent fails to load or returns generic errors (common in some Developer Edition regions).
- Detection:
<agentforce-service-agent>LWC fails to render during manual testing. - Mitigation:
- Enable “Fallback Mode” in Custom Metadata.
- Display static “AI Interaction Preview” video instead of live agent.
- Document as “Platform Limit” in the footer.
8.3 API Rate Limit Exhaustion
- Symptom: GitHub Commits or Portfolio API returns status 429.
- Mitigation: System automatically serves cached responses from
GitHub_Cache__c(Custom Setting) indefinitely until the limit resets.
8.4 Resilience Simulation Operations
Ensuring the system fails gracefully during outage events.
| Failure Scenario | Detection Method | User Experience | Auto-Recovery |
|---|---|---|---|
| GitHub API Rate Limit | HTTP 429 response | Display cached commits with “Last Updated: 15m ago” badge | Scheduler retries in 15 min |
| G6 Library 404 | loadScript() Promise rejection |
Render static SVG immediately | Log error + email admin |
| Jira API Down | 3 consecutive 503 errors | Show “Roadmap temporarily unavailable” message | Circuit Breaker opens for 30 min |
| User-Triggered Simulation | Resilience_Simulation_Enabled__c = True (Session Cache) |
“Simulation Active” badge appears; API calls mock 500 errors | Reset via UI Toggle or Session End |
9. Observability & Glass Box Telemetry
The system exposes real-time telemetry to the user via the c-system-health-footer component to demonstrate “Glass Box Telemetry” architecture.
- Heap/CPU: Visualized vs. Governor Limits.
- AI Provider Health: Current active provider and estimated latency.
- FinOps Telemetry: Real-time counter of Gemini API calls remaining (e.g., “Daily Quota: 85% Free”).
Appendices
Appendix A: Engineering Implementation Notes
- A.1 CI/CD Pipeline Configuration: Authentication via Connected App with “Use Digital Signatures.” Stores keys in GitHub Secrets. Use pr.yml for quality gates and deploy.yml for production push.
- A.2 CORS & Security: Whitelist custom domain, enable LWS, update CSP for external scripts (Calendly, GitHub, Atlassian). Log retention policy: Zero-Persistence.
- A.3 Code Reusability: Shared Prism.js utility module. Nebula Logger handles try/catch blocks.
- A.4 GitHub API Integration: Uses Named Credential
GitHub_API. Caches toGitHub_Cache__c. Refreshed byGitHubCacheRefreshJob.cls. - A.5 Hero Banner Navigation: (Refer to UI specs).
- A.6 Agentforce Configuration: Configure Agent Topic to query
Project__c. Use “Mirror Mode” in system instructions. - A.7 Architecture Diagram Hosting: Export C4 diagram and upload as Static Resource.
- A.8 Jira Integration: Endpoint: ryanbumstead.atlassian.net. Auth: Basic Auth with Named Credential.
- A.9 Advanced Visualization Strategy:
- Mobile Guardrail: Check FORM_FACTOR. Render static SVG if mobile.
- Lazy Loading: Dynamic import of G6 inside renderedCallback.
- Library Version: AntV G6 v4.8.x.
Appendix B: API Specification (OpenAPI/Swagger)
The portfolio implements a layered API architecture following the Anypoint API-led connectivity pattern:
B.1 System API (SAPI) - salesforce-sapi.yaml
Purpose: Provides direct access to Salesforce core objects with minimal transformation.
Base URL: https://rbumstead-dev-ed.develop.my.site.com/services/apexrest
Version: 1.2.0
Security: System-to-system API Key headers (client_id, client_secret) validated via Salesforce Custom Metadata.
Key Design Principles:
- Zero Trust Architecture: All endpoints require explicit API Key validation (
client_id,client_secret) mapped to Custom Metadata permissions - Distributed Tracing: Mandatory
X-Request-Idheader (UUID format) in all requests for correlation across log aggregation systems - Contract-First Design: OpenAPI 3.0 specification defines the interface before implementation
- Explicit Caching:
Cache-Controlheaders distinguish between cacheable configuration (max-age=300) and dynamic data (no-store) - Rate Limiting: Standard tier enforces 120 requests/minute with burst capacity of 20
- Versioning:
X-API-Versionheader required for contract negotiation and backward compatibility
Core Endpoints:
| Endpoint | Method | Purpose | Cache Strategy |
|---|---|---|---|
/contacts |
GET | Retrieve Contact records | No-Cache (PII) |
/experience |
GET | Retrieve Experience__c records |
No-Cache (Dynamic) |
/experience-highlights |
GET | Retrieve resume bullets with persona filtering | No-Cache (Dynamic) |
/projects |
GET | Retrieve Project__c records |
Cacheable (5 min) |
/projects/{id} |
GET | Retrieve single Project by ID | Cacheable (5 min) |
/projects |
POST | Create Project (Future - Currently 405) | N/A |
/project-assets |
GET | Retrieve media assets linked to projects | Cacheable (5 min) |
/testimonials |
GET | Retrieve approved testimonials | No-Cache (Social Proof) |
/skills |
GET | Retrieve Skill__c records |
Cacheable (5 min) |
/certifications |
GET | Retrieve certification records | Cacheable (5 min) |
/education |
GET | Retrieve education records | Cacheable (5 min) |
/portfolio-config |
GET | Retrieve global configuration singleton | Cacheable (5 min) |
/project-skills |
GET | Retrieve Project-Skill junction records | Cacheable (5 min) |
/experience-skills |
GET | Retrieve Experience-Skill junction records | Cacheable (5 min) |
/certification-skills |
GET | Retrieve Certification-Skill junction records | Cacheable (5 min) |
Query Parameters:
All list endpoints support:
limit(default: 50, max: 200) - Pagination limitoffset(default: 0) - Pagination offset- Domain-specific filters (e.g.,
persona,status,employerName)
Error Handling:
| Status Code | Meaning | Retryable | Response Header |
|---|---|---|---|
| 400 | Bad Request (Invalid parameters) | No | X-Request-Id |
| 401 | Unauthorized (Missing/invalid token) | No | X-Request-Id |
| 403 | Forbidden (Insufficient scope) | No | X-Request-Id |
| 404 | Not Found (Invalid record ID) | No | X-Request-Id |
| 429 | Too Many Requests (Rate limit exceeded) | Yes | X-Request-Id, Retry-After |
| 500 | Internal Server Error (Apex/Platform fault) | Yes | X-Request-Id |
Schema Highlights:
All response schemas inherit from SalesforceRecord base type which includes:
attributes- Salesforce system metadata (type, url)LastModifiedDate- Audit timestamp (ISO 8601)SystemModstamp- System modification timestamp_links- HATEOAS navigation links for discoverability
Governance Features:
- Idempotency Support:
X-Idempotency-Keyheader prevents duplicate processing (prepared for future write operations) - Observability: All error responses include
correlationIdfor incident tracking - Future-Proof Versioning: API version negotiation via header prevents breaking changes for existing consumers
B.2 Process API (PAPI) - portfolio-papi.yaml
Purpose: Orchestration layer that aggregates and transforms SAPI data for optimized frontend consumption.
Base URL: https://api.portfolio.ryanbumstead.com/papi/v1
Version: 1.2.0
Layer Classification: Process API (MuleSoft API-led connectivity pattern)
Key Design Principles:
- Smart Aggregation: Single
/profile/fullendpoint eliminates 15+ client round-trips by pre-fetching related objects - Business Logic Encapsulation: Applies “Vibe Mode” filtering, persona-based resume generation, and social proof curation
- Frontend Optimization: Returns nested, denormalized JSON structures ready for immediate rendering
- Transformation Layer: Converts Salesforce field names to frontend-friendly camelCase conventions
Core Endpoints:
| Endpoint | Purpose | Upstream SAPI Calls | Benefit |
|---|---|---|---|
/profile/full |
Complete portfolio hydration | 10+ endpoints (Config, Skills, Tests, etc.) | Single Request loads entire app state |
/profile/summary |
Employment profile only | 5 (Contact, Experience, Skills, Certifications, Education) | Lightweight profile for resume generation |
/resume/generate |
ATS-optimized plain text resume | 3 (Experience, Experience Highlights filtered by persona, Skills) | Server-side text formatting eliminates client complexity |
/projects/featured |
Enriched project showcase | 3 (Projects, Project Assets, Project Skills) | Pre-joined data structure eliminates N+1 query problem |
/testimonials/feed |
Curated social proof | 1 (Testimonials with Vibe Mode filter) | Server-side filtering ensures brand consistency |
Transformation Examples:
SAPI Response (Raw Salesforce):
{
"Id": "a00xx000001",
"Employer__c": "Salesforce",
"Position_Title__c": "Technical Architect",
"Start_Date__c": "2023-01-15",
"End_Date__c": null,
"Is_Current_Role__c": true
}
PAPI Response (Frontend-Optimized):
{
"employer": "Salesforce",
"role": "Technical Architect",
"dateRange": "Jan 2023 - Present",
"isCurrent": true,
"skillsUsed": ["Apex", "LWC", "Event Bus"],
"highlights": [
"Designed multi-cloud architectures",
"Led DevOps transformation"
]
}
Persona-Based Resume Generation:
The /resume/generate?persona=architect endpoint applies server-side filtering logic:
- Fetches all Experience Highlight records
- Filters by
Persona_Tag__c IN ('Architect', 'General') - Sorts by
Architect_Sort_Order__c - Formats as ATS-compliant plain text with proper spacing and bullet points
Vibe Mode Social Proof:
The /testimonials/feed?mode=professional endpoint applies business logic:
- Professional Mode: Only includes testimonials where
Relationship_Type__c IN ('Manager', 'Client')ANDApproved__c = true - Casual Mode: Includes peer reviews and
Vibe_Mode__c = 'Casual'entries for authenticity
Performance Impact:
| Metric | Without PAPI (Direct SAPI) | With PAPI | Improvement |
|---|---|---|---|
| Initial Page Load Requests | 15-20 | 1 | 95% reduction |
| Total Payload Size | ~180KB (uncompressed) | ~45KB (pre-filtered) | 75% reduction |
| Time to Interactive (TTI) | 4.2s | 1.8s | 57% faster |
| Client-Side Processing | High (filtering, joining) | Minimal (render only) | Simplified architecture |
Future Enhancements (Documented for Phase 8):
- Server-side PDF generation (eliminating client-side jsPDF dependency)
- GraphQL query language support for selective field fetching
- Real-time WebSocket subscriptions for live testimonial updates
B.3 API Documentation Access
- Interactive Documentation: Redoc static HTML hosted as Salesforce Static Resource
- Machine-Readable Spec:
/openapi.jsonendpoint returns the complete OpenAPI 3.0 specification for code generation - Developer Console: Custom
c-api-testerLWC component provides live endpoint testing with syntax highlighting
B.4 Reference Implementation
Complete OpenAPI specifications available in repository:
packages/integration-api/specs/salesforce-sapi.yaml- System API contractpackages/integration-api/specs/portfolio-papi.yaml- Process API contract/docs/api-examples/- Postman collection with pre-configured requests
Appendix C: MuleSoft Code, Governance, & Proxy Configuration (Reference)
[!NOTE] This architecture represents the “Ideal Enterprise State” designed during the Anypoint Platform trial period (November 2025). While the live deployment has expired, the design artifacts, source code, and policy configurations remain as reference implementations demonstrating enterprise API governance practices. The Apex REST implementation functions as a runtime twin within Salesforce.
C.1 API Proxy Pattern
To ensure security and scalability, the System API was not exposed directly. Access was mediated through Anypoint API Manager Proxy to decouple implementation from consumption.
Architecture Flow: Client Request → API Manager Proxy (Policy Enforcement) → Mule Application (CloudHub) → Salesforce Org (Data Source)
Endpoint Mapping:
- Proxy Endpoint: https://salesforce-sapi.us-e2.cloudhub.io/api
- Implementation Endpoint: https://salesforce-sapi-mg-obidw.5sc6y6-1.usa-e2.cloudhub.io/api/sfdc/v1
C.2 Policy Enforcement
The following policies were configured in API Manager to demonstrate enterprise governance:
- Client ID Enforcement
- Policy Type: Client ID Enforcement (API Key)
- Requirement: All requests must include valid client_id and client_secret headers
- Rejection Response: 401 Unauthorized for missing or invalid credentials
- SLA-Based Rate Limiting
- Free Tier: 100 req/hr (Automatic Approval) — Best for portfolio demos and testing.
- Standard Tier: 1,000 req/hr (Manual Review) — Intended for production integrations.
- Premium Tier: 10,000 req/hr (Contract Required) — Reserved for high-volume enterprise consumers.
- CORS Policy
- Allowed Origins: https://ryanbumstead.com, http://localhost:* (dev only)
- Allowed Methods: GET, OPTIONS
- Allowed Headers: client_id, client_secret, Content-Type
Appendix D: Data Dictionary (Detailed Schema)
D.1 Object: Experience__c
Represents an employment period.
| Field Label | API Name | Type | Length | Required | Description |
|---|---|---|---|---|---|
| Employer | Employer__c |
Text | 255 | Yes | Company Name. |
| Position Title | Position_Title__c |
Text | 255 | Yes | Job Title. |
| Start Date | Start_Date__c |
Date | - | Yes | Employment start. |
| End Date | End_Date__c |
Date | - | No | Employment end (Null if current). |
| Is Current Role | Is_Current_Role__c |
Checkbox | - | No | Logic flag for “Present”. |
| Is Remote | Is_Remote__c |
Checkbox | - | No | Remote work flag. |
| Accomplishments | Accomplishments__c |
Long Text | 32768 | No | Summary text. (Deprecated) |
| Sort Order | Sort_Order__c |
Number | 18,0 | No | Custom sort logic. |
D.2 Object: Experience_Highlight__c
Granular bullet points for resume generation.
| Field Label | API Name | Type | Length | Required | Description |
|---|---|---|---|---|---|
| Name | Name |
Auto Number | - | Yes | System ID. |
| Experience | Experience__c |
Master-Detail | - | Yes | Parent record. |
| Description | Description__c |
Long Text | 5000 | Yes | The bullet point text. |
| Persona Tag | Persona_Tag__c |
Picklist | - | Yes | Target audience filter. |
| Admin Sort | Admin_Sort_Order__c |
Number | 2,0 | No | Sort order for Admin resume. |
| Dev Sort | Developer_Sort_Order__c |
Number | 2,0 | No | Sort order for Dev resume. |
D.3 Object: Project__c
Portfolio case studies.
| Field Label | API Name | Type | Length | Required | Description |
|---|---|---|---|---|---|
| Project Name | Name |
Text | 80 | Yes | Project Title. |
| Challenge | Challenge__c |
Rich Text | 32k | No | The “Problem”. |
| Solution | Solution__c |
Rich Text | 32k | No | The “Fix”. |
| Business Value | Business_Value__c |
Rich Text | 32k | No | The “ROI”. |
| Status | Status__c |
Picklist | - | Yes | Project state. |
| Hero Image | Hero_Image_URL__c |
URL | 255 | No | Main display image. |
| Live URL | Live_URL__c |
URL | 255 | No | Link to demo. |
| Repository | Repository_URL__c |
URL | 255 | No | Link to code. |
D.4 Object: Testimonial__c
Social proof records.
| Field Label | API Name | Type | Length | Required | Description |
|---|---|---|---|---|---|
| Author Name | Author_Name__c |
Text | 255 | Yes | Submitter Name. |
| Author Title | Author_Title__c |
Text | 255 | No | Submitter Job Title. |
| Relationship | Relationship_Type__c |
Picklist | - | Yes | Connection type. |
| Context | Context__c |
Text | 255 | No | Short blurb/quote. |
| Vibe Mode | Vibe_Mode__c |
Picklist | - | Yes | Display filter. |
| Approved | Approved__c |
Checkbox | - | No | Security gate. |
D.5 Object: GitHub_Cache__c
Stores transient API responses to avoid rate limits.
| Field Label | API Name | Type | Length | Required | Description |
|---|---|---|---|---|---|
| Name | Name |
Text | 80 | Yes | Cache Key (e.g., ‘RecentCommits’). |
| JSON Payload | JSON_Payload__c |
Long Text | 131072 | Yes | The raw JSON response from GitHub. |
D.6 Object: Portfolio_Config__mdt (Custom Metadata)
Global configuration settings.
| Field Label | API Name | Type | Length | Required | Description |
|---|---|---|---|---|---|
| Label | MasterLabel |
Text | 40 | Yes | Configuration Set Name. |
| Owner Email | Owner_Email__c |
80 | Yes | Contact email. | |
LinkedIn_URL__c |
URL | 255 | Yes | Profile URL. | |
| GitHub | GitHub_Profile_URL__c |
URL | 255 | Yes | Repo URL. |
| Career Obj | Career_Objective__c |
Text Area | 255 | No | Short bio header. |
D.7 Object: Project_Skill__c (Junction)
Links Projects to Skills for the G6 Graph.
| Field Label | API Name | Type | Required | Description |
|---|---|---|---|---|
| Project | Project__c |
Master-Detail(Project__c) |
Yes | Parent Project. |
| Skill | Skill__c |
Master-Detail(Skill__c) |
Yes | Associated Skill. |
D.8 Object: Experience_Skill__c (Junction)
Links Experience to Skills.
| Field Label | API Name | Type | Required | Description |
|---|---|---|---|---|
| Experience | Experience__c |
Master-Detail(Experience__c) |
Yes | Parent Experience. |
| Skill | Skill__c |
Master-Detail(Skill__c) |
Yes | Skill Demonstrated. |
D.9 Object: Skill__c
Competency library.
| Field Label | API Name | Type | Length | Required | Description |
|---|---|---|---|---|---|
| Skill Name | Name |
Text | 80 | Yes | Display name (e.g., “Apex”). |
| Category | Category__c |
Picklist | - | Yes | “Frontend, Backend, Cloud, Data.” |
| Icon Name | Icon_Name__c |
Text | 100 | No | SLDS icon reference or custom SVG. |
| Proficiency | Proficiency__c |
Number | 2,0 | No | Self-assessed skill level 1-5. |
D.10 Object: Project_Asset__c
Media gallery assets.
| Field Label | API Name | Type | Length | Required | Description |
|---|---|---|---|---|---|
| Asset Name | Name |
Text | 80 | Yes | Descriptive label. |
| Project | Project__c |
Master-Detail | - | Yes | Parent Project. |
| Type | Type__c |
Picklist | - | Yes | “Image, Video, Document, Link.” |
| External URL | External_URL__c |
URL | 255 | Yes | CDN or S3 location. |
D.11 Picklist Value Enumeration
| Field | Object | Values |
|---|---|---|
Persona_Tag__c |
Experience_Highlight__c |
Admin, Developer, Architect, General |
Relationship_Type__c |
Testimonial__c |
Manager, Peer, Client, Recruiter, Fan |
Vibe_Mode__c |
Testimonial__c |
Professional (Clean/Corporate), Casual (Fun/Raw) |
Status__c |
Project__c |
Live - In Production, Live - Demo / Reference, Active Development, On Hold, Archived |
Pillar__c |
Project__c |
Business, Consulting, Integration, AI, DevOps |
D.12 Index & Query Optimization
To support high-volume queries during traffic spikes (e.g., LinkedIn post viral shares):
- Indexed Fields:
Project__c.Status__c+Project__c.Pillar__c(Composite Index) - Query:
SELECT Id FROM Project__c WHERE Status__c IN ('Live — Demo / Reference', 'Live — In Production', 'Active Development') AND Pillar__c = 'C' - Justification: API Tester component filters by pillar (Section 5.3).
- Non-Indexed Fields:
Testimonial__c.Context__c(Text, rarely filtered). - Why Skip: Only queried via
Approved__c = true(already indexed via checkbox).
Appendix E: Environment Strategy
- Strategy: Refer to Maintenance & Operations Guide: Environment Hygiene for the comprehensive environment strategy, including org separation and authorized code rules.
Appendix F: Testing Strategy
- Strategy: Refer to Guardrails & Executable Governance: Quality Gates & DevOps Discipline for the comprehensive testing strategy (Unit, LWC, Integration).
Appendix G: Accessibility Strategy (A11y)
- G.1 The “Shadow Structure” Pattern: Visually hidden
<ul>renders alongside the graph for screen readers. - G.2 Motion Sensitivity: Auto-detects prefers-reduced-motion and initializes graph in PAUSED state.
- G.3 Keyboard Navigation: Focus management via Shadow List. Skip links function normally.
- G.4 Compliance Checklist: (WCAG 2.1 AA compliant).
Appendix H: Deployment Architecture View
C4 Level 4: Infrastructure & Network Flow.
Browser → Akamai CDN → LWR Runtime → Apex Controller → DB.
Apex → Named Credential → External APIs (Jira/GitHub).
Appendix I: Org & Package Structure
Enterprise-grade monorepo structure using unlocked packages and source tracking.
/packages/portfolio-site: Configurations, declarative, and programmatic resources focused on adding features to the Salesforce Architect Portfolio/packages/integration-api: REST resources including Anypoint Studio project files, Anypoint Studio jar files, API specifications, and Salesforce Apex Classes for REST APIs including SAPI and PAPI./packages/shared-modules: Shared modules reusable across packages, for example lightning web components use across the portfolio-site and integration-api focused lightning web components./packages/demos/employer-hub: Salesforce metadata and presentation documentation for a demonstration provided to a client focused on building a centralized hub for employers./packages/demos/nonprofit-literacy: Salesforce metadata and presentation documentation for a demonstration provided to a client focused on the implementation of nonprofit success pack and the program management module including business analysis on several products including Salesforce Education Cloud.
Appendix J: Cloud FinOps Strategy (Phase 8 - Q2 2026)
- FinOps Strategy: Refer to Guardrails & Executable Governance: AWS FinOps & Serverless Guardrails for the detailed cost governance model ($0.00 Forever architecture).
Appendix K: Validation Rules & Logic
- K.1
Experience__c:VR_End_Date_After_Start. - K.2
Experience_Highlight__c:VR_Persona_Required. - K.3
Testimonial__c:VR_Vibe_Required. - K.4 Sharing Rules: Guest User Read-Only for
Project__c/Experience__c.Testimonial__cis Private (No Access). - K.5 Restriction Rules on Guest User Profile verified compatible in Spring ‘26. Fallback to Criteria-Based Sharing Rule (
Approved__c = true) remains documented if needed.
Appendix L: Reference Artifacts
- Exchange Portal Screenshot:
/docs/mulesoft/exchange-portal.png - API Manager Policies:
/docs/mulesoft/api-manager-policies.png - SLA Configuration:
/docs/mulesoft/sla-tiers.png - Analytics Dashboard:
/docs/mulesoft/analytics-dashboard.png - OpenAPI Specification:
/mulesoft/src/main/resources/api/salesforce-sapi.yaml - Mule Flow XML:
/mulesoft/src/main/mule/*.xml - DataWeave Queries:
/mulesoft/src/main/resources/queries/*.dwl
Appendix M: Cross-Cutting Pattern - Dual-Door Integration Strategy
| Feature | Door 1 — Native Salesforce GraphQL (lightning/uiGraphQLApi) | Door 2 — AWS Lambda Polyglot BFF (Function URL) |
|---|---|---|
| Timeline | MVP – Q1 2026 (planned) | Phase 8 – Q2 2026 (design complete) |
| Primary Consumers | All internal LWC components (Skill Graph, Roadmap) | API Lab “Enterprise Mode”, future mobile apps |
| Technology | lightning/uiGraphQLApi wire adapter | Single Lambda Function URL + in-function governance |
| Latency | Lowest possible (LDS + UI cache) | Single external round-trip |
| Caching | Automatic via Lightning Data Service | In-memory or DynamoDB inside Lambda |
| Governance | Platform-managed | Full enterprise policies (keys, rate limits, analytics) |
| Payload Reduction | Platform-optimized | 85—92% reduction vs parallel REST calls |
| Cost | $0 | $0.00 forever (no API Gateway, no VPC) |
| Current Status | Planned for MVP launch | Fully architected & documented – activation in Phase 8 |