Present Architecture

Overall architecture

flowchart LR
    subgraph Azure [" "]
        direction LR
        AAD[("Azure\nActive Directory")]
        BLOB[("Blob Storage")]
        APIM["API\nManagement"]
    end

    subgraph K8S ["Kubernetes Cluster"]
        direction LR
        subgraph BE ["Present Backend"]
            Pod1[("Pod")]
            Pod2[("Pod")]
            Pod3[("Pod")]
        end
        
        subgraph FE ["Front End"]
            ING["Ingress"]
        end
    end

    Present["Present"]

    APIM --"HTTP/ASYNC"--> AAD
    Present --"HTTP/ASYNC"--> APIM
    APIM --"HTTP/ASYNC"--> ING
    ING --"HTTP/ASYNC"--> Pod3
    Pod3 --> BLOB

    classDef azure fill:#0072C6,stroke:#fff,stroke-width:2px,color:#fff
    classDef k8s fill:#326CE5,stroke:#fff,stroke-width:2px,color:#fff
    
    class AAD,BLOB,APIM azure
    class Pod1,Pod2,Pod3,ING k8s

Present Salesforce Objects

Present Salesforce Objects

Present Sequence Diagrams

Upload Template Flow

sequenceDiagram
    autonumber
    actor A as Present Admin
    participant S as Salesforce
    participant APIM as APIM
    participant P as Present Backend
    participant B as Blob Storage

    A ->> S: Upload template (LWC)
    S ->> S: Upload template to SF user library
    S ->> APIM: Get token via named credentials
    APIM ->> S: Token response
    S ->> P: Upload(ContentVersionId and OwnerId)
    P ->> S: Get ContentVersion content
    S ->> P: ContentVersion content
    P ->> B: Create new blob
    B ->> P: Blob created
    P ->> S: Template uploaded response
    S ->> A: List templates (LWC)

Generate Presentation Flow

```mermaid sequenceDiagram autonumber actor A as Advisor participant S as Salesforce participant APIM as APIM participant P as Present Backend participant B as Blob Storage

A ->> S: Generate presentation (LWC)
S ->> APIM: Get token via named credentials
APIM ->> S: Token response
S ->> P: PPTX Generation request (Tag Mappings, Slides)
P ->> B: Get templates
B ->> P: Template content
P ->> P: Generate presentation from template and tags
P ->> S: Upload presentation to Salesforce
S ->> A: Generation complete!