# shriyapancholi/miniblog architecture

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

- Interactive diagram: https://gitdiagram.com/shriyapancholi/miniblog
- Repository: https://github.com/shriyapancholi/miniblog

## Overview

MiniBlog is a full-stack social blogging platform. Users authenticate, create and discover posts, and interact through follows, comments, reactions, notifications, and messaging; profiles, subscriptions, search, analytics, and administration extend that workflow. The React app routes users to these features and calls the Express API; the server-side domain handlers use MongoDB models, with Elasticsearch, Socket.IO, S3, Razorpay, and OpenAI supporting documented capabilities. Some route/controller implementations were not sampled, so the graph omits uncertain wiring and shows only evidenced connections for those areas.

Main entry points: [`miniblog/frontend/src/App.jsx`](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/App.jsx) (App routes), [`miniblog/frontend/src/api/axios.js`](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/api/axios.js) (API client), [`miniblog/backend/src/models/Post.js`](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/models/Post.js) (MongoDB models), [`miniblog/backend/src/config/app.js`](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/config/app.js) (Express app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["React client"]
  node_webapp["App routes<br/>[App.jsx]"]
  node_http["API client<br/>[axios.js]"]
  node_postpages["Post and feed pages<br/>[Dashboard.jsx]"]
  node_socialpages["Profiles and social pages<br/>[UserProfile.jsx]"]
  node_searchpages["Search and analytics<br/>[SearchResults.jsx]"]
  node_chatpage["Inbox and chat<br/>[Chat.jsx]"]
end

subgraph group_api["HTTP API"]
  node_express["Express app<br/>[app.js]"]
  node_postsroute["Post routes<br/>[posts.js]"]
  node_authroute["Auth routes<br/>[auth.js]"]
  node_searchroute["Search routes<br/>[search.js]"]
end

subgraph group_social["Social domain"]
  node_postcontroller["Post handling<br/>[postController.js]"]
  node_followcontroller["Follow handling"]
  node_profilecontroller["Profile handling"]
  node_admincontroller["Administration<br/>[adminController.js]"]
  node_models[("MongoDB models<br/>[Post.js]")]
end

subgraph group_services["Realtime and integrations"]
  node_server["Socket server<br/>[server.js]"]
  node_searchservice["Search indexing<br/>[searchService.js]"]
  node_elasticsearch[("Elasticsearch<br/>[elasticsearch.js]")]
  node_s3["Image storage<br/>[s3.js]"]
  node_chatbot["AI chatbot<br/>[chatController.js]"]
  node_openai["OpenAI"]
  node_razorpay["Razorpay subscriptions"]
end

node_user(("User"))

node_user -->|"uses"| node_webapp
node_webapp -->|"routes to"| node_postpages
node_webapp -->|"routes to"| node_socialpages
node_webapp -->|"routes to"| node_searchpages
node_webapp -->|"routes to"| node_chatpage
node_postpages -->|"requests data"| node_http
node_socialpages -->|"requests data"| node_http
node_searchpages -->|"requests data"| node_http
node_chatpage -->|"requests data"| node_http
node_http -->|"sends requests"| node_express
node_express -->|"mounts"| node_postsroute
node_express -->|"mounts"| node_authroute
node_express -->|"mounts"| node_searchroute
node_postcontroller -->|"reads and writes"| node_models
node_followcontroller -->|"reads and writes"| node_models
node_profilecontroller -->|"reads and writes"| node_models
node_admincontroller -->|"reads and writes"| node_models
node_postcontroller -->|"indexes posts"| node_searchservice
node_profilecontroller -->|"indexes users"| node_searchservice
node_searchservice -->|"indexes and searches"| node_elasticsearch
node_server -->|"stores messages and status"| node_models
node_chatbot -->|"requests completions"| node_openai
node_razorpay -.->|"handles subscriptions"| node_razorpay

click node_webapp "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/App.jsx"
click node_http "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/api/axios.js"
click node_postpages "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/pages/Dashboard.jsx"
click node_socialpages "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/pages/UserProfile.jsx"
click node_searchpages "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/pages/SearchResults.jsx"
click node_chatpage "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/pages/Chat.jsx"
click node_express "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/config/app.js"
click node_postsroute "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/routes/posts.js"
click node_authroute "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/routes/auth.js"
click node_searchroute "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/routes/search.js"
click node_postcontroller "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/postController.js"
click node_followcontroller "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/followController.js"
click node_profilecontroller "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/profileController.js"
click node_admincontroller "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/adminController.js"
click node_models "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/models/Post.js"
click node_server "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/server.js"
click node_searchservice "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/services/searchService.js"
click node_elasticsearch "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/config/elasticsearch.js"
click node_s3 "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/config/s3.js"
click node_chatbot "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/chatController.js"
click node_razorpay "https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/subscriptionController.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_webapp,node_http,node_postpages,node_socialpages,node_searchpages,node_chatpage,node_user toneBlue
class node_express,node_postsroute,node_authroute,node_searchroute toneAmber
class node_postcontroller,node_followcontroller,node_profilecontroller,node_admincontroller,node_models toneMint
class node_server,node_searchservice,node_elasticsearch,node_s3,node_chatbot,node_openai,node_razorpay toneRose
```

## Components

### React client

- [App routes](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/App.jsx): `miniblog/frontend/src/App.jsx`
- [API client](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/api/axios.js): `miniblog/frontend/src/api/axios.js`
- [Post and feed pages](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/pages/Dashboard.jsx): `miniblog/frontend/src/pages/Dashboard.jsx`
- [Profiles and social pages](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/pages/UserProfile.jsx): `miniblog/frontend/src/pages/UserProfile.jsx`
- [Search and analytics](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/pages/SearchResults.jsx): `miniblog/frontend/src/pages/SearchResults.jsx`
- [Inbox and chat](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/frontend/src/pages/Chat.jsx): `miniblog/frontend/src/pages/Chat.jsx`

### HTTP API

- [Express app](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/config/app.js): `miniblog/backend/src/config/app.js`
- [Post routes](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/routes/posts.js): `miniblog/backend/src/routes/posts.js`
- [Auth routes](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/routes/auth.js): `miniblog/backend/src/routes/auth.js`
- [Search routes](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/routes/search.js): `miniblog/backend/src/routes/search.js`

### Social domain

- [Post handling](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/postController.js): `miniblog/backend/src/controllers/postController.js`
- [Follow handling](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/followController.js): `miniblog/backend/src/controllers/followController.js`
- [Profile handling](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/profileController.js): `miniblog/backend/src/controllers/profileController.js`
- [Administration](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/adminController.js): `miniblog/backend/src/controllers/adminController.js`
- [MongoDB models](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/models/Post.js): `miniblog/backend/src/models/Post.js`

### Realtime and integrations

- [Socket server](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/server.js): `miniblog/backend/server.js`
- [Search indexing](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/services/searchService.js): `miniblog/backend/src/services/searchService.js`
- [Elasticsearch](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/config/elasticsearch.js): `miniblog/backend/src/config/elasticsearch.js`
- [Image storage](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/config/s3.js): `miniblog/backend/src/config/s3.js`
- [AI chatbot](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/chatController.js): `miniblog/backend/src/controllers/chatController.js`
- **OpenAI**
- [Razorpay subscriptions](https://github.com/shriyapancholi/miniblog/blob/main/miniblog/backend/src/controllers/subscriptionController.js): `miniblog/backend/src/controllers/subscriptionController.js`

### Other components

- **User**

## Connections

- User → App routes: uses
- App routes → Post and feed pages: routes to
- App routes → Profiles and social pages: routes to
- App routes → Search and analytics: routes to
- App routes → Inbox and chat: routes to
- Post and feed pages → API client: requests data
- Profiles and social pages → API client: requests data
- Search and analytics → API client: requests data
- Inbox and chat → API client: requests data
- API client → Express app: sends requests
- Express app → Post routes: mounts
- Express app → Auth routes: mounts
- Express app → Search routes: mounts
- Post handling → MongoDB models: reads and writes
- Follow handling → MongoDB models: reads and writes
- Profile handling → MongoDB models: reads and writes
- Administration → MongoDB models: reads and writes
- Post handling → Search indexing: indexes posts
- Profile handling → Search indexing: indexes users
- Search indexing → Elasticsearch: indexes and searches
- Socket server → MongoDB models: stores messages and status
- AI chatbot → OpenAI: requests completions
- Razorpay subscriptions → Razorpay subscriptions: handles subscriptions
