# nayira1205/social-media-content-analyzer architecture

> Architecture diagram of the GitHub repository nayira1205/social-media-content-analyzer, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nayira1205/social-media-content-analyzer
- Repository: https://github.com/nayira1205/social-media-content-analyzer

## Overview

SocialPostLens turns an uploaded social-post draft into extracted text, explainable engagement scores and suggestions, and optional AI insights. The browser validates and submits files; the API chooses PDF parsing or image OCR, runs the core analyzer, optionally requests Groq insights, and returns results for rendering. The README documents validation, error handling, and fallback behavior; sampled source confirms the main request flow. No persistence layer is described or present in the tree.

Main entry points: [`server.js`](https://github.com/nayira1205/social-media-content-analyzer/blob/main/server.js) (Express API), [`public/script.js`](https://github.com/nayira1205/social-media-content-analyzer/blob/main/public/script.js) (Upload and results), [`services/llmSuggestions.js`](https://github.com/nayira1205/social-media-content-analyzer/blob/main/services/llmSuggestions.js) (AI insights client), [`public/index.html`](https://github.com/nayira1205/social-media-content-analyzer/blob/main/public/index.html) (Upload page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_browser["Browser experience"]
  node_page["Upload page<br/>[index.html]"]
  node_client["Upload and results<br/>[script.js]"]
end

subgraph group_api["API workflow"]
  node_server["Express API<br/>[server.js]"]
  node_upload["File middleware<br/>[server.js]"]
end

subgraph group_analysis["Text analysis"]
  node_pdf["PDF extraction<br/>[pdfExtractor.js]"]
  node_ocr["Image OCR<br/>[ocrExtractor.js]"]
  node_analyzer["Engagement scoring"]
end

subgraph group_integrations["External integration"]
  node_llm["AI insights client<br/>[llmSuggestions.js]"]
end

node_user(("Post author"))
node_groq["Groq API"]

node_user -->|"uses"| node_page
node_page -->|"loads"| node_client
node_client -->|"validates file"| node_user
node_client -->|"uploads draft"| node_server
node_server -->|"processes upload"| node_upload
node_server -->|"parses PDF"| node_pdf
node_server -->|"runs OCR"| node_ocr
node_pdf -->|"returns text"| node_server
node_ocr -->|"returns text"| node_server
node_server -->|"scores text"| node_analyzer
node_analyzer -->|"returns analysis"| node_server
node_server -.->|"requests insights"| node_llm
node_llm -.->|"requests completion"| node_groq
node_groq -.->|"returns insights"| node_llm
node_llm -.->|"returns insights"| node_server
node_server -->|"returns JSON"| node_client
node_client -->|"renders results"| node_user

click node_page "https://github.com/nayira1205/social-media-content-analyzer/blob/main/public/index.html"
click node_client "https://github.com/nayira1205/social-media-content-analyzer/blob/main/public/script.js"
click node_server "https://github.com/nayira1205/social-media-content-analyzer/blob/main/server.js"
click node_upload "https://github.com/nayira1205/social-media-content-analyzer/blob/main/server.js"
click node_pdf "https://github.com/nayira1205/social-media-content-analyzer/blob/main/services/pdfExtractor.js"
click node_ocr "https://github.com/nayira1205/social-media-content-analyzer/blob/main/services/ocrExtractor.js"
click node_analyzer "https://github.com/nayira1205/social-media-content-analyzer/blob/main/services/engagementAnalyzer.js"
click node_llm "https://github.com/nayira1205/social-media-content-analyzer/blob/main/services/llmSuggestions.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_page,node_client toneBlue
class node_server,node_upload toneAmber
class node_pdf,node_ocr,node_analyzer,node_groq toneMint
class node_llm toneRose
class node_user toneIndigo
```

## Components

### Browser experience

- [Upload page](https://github.com/nayira1205/social-media-content-analyzer/blob/main/public/index.html): `public/index.html`
- [Upload and results](https://github.com/nayira1205/social-media-content-analyzer/blob/main/public/script.js): `public/script.js`

### API workflow

- [Express API](https://github.com/nayira1205/social-media-content-analyzer/blob/main/server.js): `server.js`
- [File middleware](https://github.com/nayira1205/social-media-content-analyzer/blob/main/server.js): `server.js`

### Text analysis

- [PDF extraction](https://github.com/nayira1205/social-media-content-analyzer/blob/main/services/pdfExtractor.js): `services/pdfExtractor.js`
- [Image OCR](https://github.com/nayira1205/social-media-content-analyzer/blob/main/services/ocrExtractor.js): `services/ocrExtractor.js`
- [Engagement scoring](https://github.com/nayira1205/social-media-content-analyzer/blob/main/services/engagementAnalyzer.js): `services/engagementAnalyzer.js`

### External integration

- [AI insights client](https://github.com/nayira1205/social-media-content-analyzer/blob/main/services/llmSuggestions.js): `services/llmSuggestions.js`

### Other components

- **Post author**
- **Groq API**

## Connections

- Post author → Upload page: uses
- Upload page → Upload and results: loads
- Upload and results → Post author: validates file
- Upload and results → Express API: uploads draft
- Express API → File middleware: processes upload
- Express API → PDF extraction: parses PDF
- Express API → Image OCR: runs OCR
- PDF extraction → Express API: returns text
- Image OCR → Express API: returns text
- Express API → Engagement scoring: scores text
- Engagement scoring → Express API: returns analysis
- Express API → AI insights client: requests insights
- AI insights client → Groq API: requests completion
- Groq API → AI insights client: returns insights
- AI insights client → Express API: returns insights
- Express API → Upload and results: returns JSON
- Upload and results → Post author: renders results
