# kushalkumar12/social-media-mgmnt architecture

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

- Interactive diagram: https://gitdiagram.com/kushalkumar12/social-media-mgmnt
- Repository: https://github.com/kushalkumar12/social-media-mgmnt

## Overview

InstaMngmt is a web application for managing Instagram accounts and planning, scheduling, and publishing posts. Users authenticate, connect accounts, prepare media and post details, then manage posts in a list or calendar; bulk Excel uploads support preview and batch scheduling. The backend also exposes dashboard, group, settings, and media capabilities. Sampled controller code confirms key request dispatch, and sampled import code confirms batch persistence and outbox creation. Other subsystem links reflect the tree and documented responsibilities; unsampled service internals are not expanded.

Main entry points: [`frontend/src/services/api.ts`](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/services/api.ts) (API client), [`frontend/src/App.tsx`](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/App.tsx) (Application routes), [`backend/src/main/java/com/instamngmt/controller/PostController.java`](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/PostController.java) (Post endpoints), [`backend/src/main/java/com/instamngmt/service/AuthService.java`](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/AuthService.java) (Authentication service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["Application routes<br/>[App.tsx]"]
  node_authctx["Session context<br/>[AuthContext.tsx]"]
  node_postpages["Post and calendar pages<br/>[PostsPage.tsx]"]
  node_createpage["Post composer<br/>[CreatePostPage.tsx]"]
  node_mediapage["Media page<br/>[MediaPage.tsx]"]
  node_connectpage["Account connection"]
  node_dashboardpage["Dashboard<br/>[DashboardPage.tsx]"]
  node_excelclient["Excel client<br/>[excelService.ts]"]
  node_apiclient["API client<br/>[api.ts]"]
end

subgraph group_api["API and identity"]
  node_postctrl["Post endpoints"]
  node_igctrl["Instagram endpoints"]
  node_authctrl["Authentication endpoints"]
  node_authservice["Authentication service<br/>[AuthService.java]"]
  node_jwt["JWT security"]
  node_groupsctrl["Account groups"]
  node_settingsctrl["Site settings"]
  node_dashboardctrl["Dashboard API"]
end

subgraph group_content["Content planning"]
  node_postservice["Post scheduling<br/>[PostService.java]"]
  node_excel["Excel import"]
  node_mediaservice["Media management<br/>[MediaService.java]"]
  node_storage["File storage"]
end

subgraph group_publishing["Publishing"]
  node_igservice["Account management"]
  node_igclient["Instagram API client"]
  node_poller["Outbox poller"]
  node_worker["Publishing worker"]
end

subgraph group_data["Application data"]
  node_db[("Application database")]
end

node_user(("User"))
node_meta{{"Meta Graph API"}}

node_user -->|"uses"| node_app
node_app -->|"provides session"| node_authctx
node_app -->|"routes"| node_postpages
node_app -->|"routes"| node_createpage
node_app -->|"routes"| node_mediapage
node_app -->|"routes"| node_connectpage
node_app -->|"routes"| node_dashboardpage
node_postpages -->|"requests"| node_apiclient
node_createpage -->|"requests"| node_apiclient
node_mediapage -->|"requests"| node_apiclient
node_connectpage -->|"requests"| node_apiclient
node_dashboardpage -->|"requests"| node_apiclient
node_excelclient -->|"requests"| node_apiclient
node_apiclient -->|"HTTP requests"| node_postctrl
node_apiclient -->|"HTTP requests"| node_igctrl
node_apiclient -->|"HTTP requests"| node_authctrl
node_postctrl -->|"resolves user"| node_authservice
node_postctrl -->|"dispatches posts"| node_postservice
node_postctrl -->|"dispatches imports"| node_excel
node_igctrl -->|"resolves user"| node_authservice
node_igctrl -->|"dispatches accounts"| node_igservice
node_authctrl -->|"dispatches auth"| node_authservice
node_authservice -->|"issues tokens"| node_jwt
node_postservice -->|"post state"| node_db
node_excel -->|"batch and posts"| node_db
node_mediaservice -.->|"stores files"| node_storage
node_mediaservice -.->|"media records"| node_db
node_igservice -->|"account records"| node_db
node_igservice -->|"verifies account"| node_igclient
node_igclient -->|"Graph API calls"| node_meta
node_poller -.->|"dispatches jobs"| node_worker
node_worker -.->|"publishes media"| node_igclient
node_worker -.->|"job and attempt state"| node_db
node_groupsctrl -.->|"group data"| node_db
node_settingsctrl -.->|"settings data"| node_db
node_dashboardctrl -.->|"dashboard data"| node_db

click node_app "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/App.tsx"
click node_authctx "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/context/AuthContext.tsx"
click node_postpages "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/pages/PostsPage.tsx"
click node_createpage "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/pages/CreatePostPage.tsx"
click node_mediapage "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/pages/MediaPage.tsx"
click node_connectpage "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/pages/InstagramConnectPage.tsx"
click node_dashboardpage "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/pages/DashboardPage.tsx"
click node_excelclient "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/services/excelService.ts"
click node_apiclient "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/services/api.ts"
click node_postctrl "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/PostController.java"
click node_igctrl "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/InstagramController.java"
click node_authctrl "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/AuthController.java"
click node_authservice "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/AuthService.java"
click node_jwt "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/security/JwtTokenProvider.java"
click node_postservice "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/PostService.java"
click node_excel "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/ExcelImportService.java"
click node_mediaservice "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/MediaService.java"
click node_storage "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/StorageService.java"
click node_igservice "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/InstagramAuthService.java"
click node_igclient "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/InstagramClientService.java"
click node_poller "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/scheduler/OutboxPollerScheduler.java"
click node_worker "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/InstagramPublishingWorker.java"
click node_groupsctrl "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/AccountGroupController.java"
click node_settingsctrl "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/SiteSettingController.java"
click node_dashboardctrl "https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/DashboardController.java"

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_app,node_authctx,node_postpages,node_createpage,node_mediapage,node_connectpage,node_dashboardpage,node_excelclient,node_apiclient,node_user toneBlue
class node_postctrl,node_igctrl,node_authctrl,node_authservice,node_jwt,node_groupsctrl,node_settingsctrl,node_dashboardctrl toneAmber
class node_postservice,node_excel,node_mediaservice,node_storage,node_meta toneMint
class node_igservice,node_igclient,node_poller,node_worker toneRose
class node_db toneIndigo
```

## Components

### Web application

- [Application routes](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Session context](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/context/AuthContext.tsx): `frontend/src/context/AuthContext.tsx`
- [Post and calendar pages](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/pages/PostsPage.tsx): `frontend/src/pages/PostsPage.tsx`
- [Post composer](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/pages/CreatePostPage.tsx): `frontend/src/pages/CreatePostPage.tsx`
- [Media page](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/pages/MediaPage.tsx): `frontend/src/pages/MediaPage.tsx`
- [Account connection](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/pages/InstagramConnectPage.tsx): `frontend/src/pages/InstagramConnectPage.tsx`
- [Dashboard](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/pages/DashboardPage.tsx): `frontend/src/pages/DashboardPage.tsx`
- [Excel client](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/services/excelService.ts): `frontend/src/services/excelService.ts`
- [API client](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/frontend/src/services/api.ts): `frontend/src/services/api.ts`

### API and identity

- [Post endpoints](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/PostController.java): `backend/src/main/java/com/instamngmt/controller/PostController.java`
- [Instagram endpoints](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/InstagramController.java): `backend/src/main/java/com/instamngmt/controller/InstagramController.java`
- [Authentication endpoints](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/AuthController.java): `backend/src/main/java/com/instamngmt/controller/AuthController.java`
- [Authentication service](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/AuthService.java): `backend/src/main/java/com/instamngmt/service/AuthService.java`
- [JWT security](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/security/JwtTokenProvider.java): `backend/src/main/java/com/instamngmt/security/JwtTokenProvider.java`
- [Account groups](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/AccountGroupController.java): `backend/src/main/java/com/instamngmt/controller/AccountGroupController.java`
- [Site settings](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/SiteSettingController.java): `backend/src/main/java/com/instamngmt/controller/SiteSettingController.java`
- [Dashboard API](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/controller/DashboardController.java): `backend/src/main/java/com/instamngmt/controller/DashboardController.java`

### Content planning

- [Post scheduling](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/PostService.java): `backend/src/main/java/com/instamngmt/service/PostService.java`
- [Excel import](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/ExcelImportService.java): `backend/src/main/java/com/instamngmt/service/ExcelImportService.java`
- [Media management](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/MediaService.java): `backend/src/main/java/com/instamngmt/service/MediaService.java`
- [File storage](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/StorageService.java): `backend/src/main/java/com/instamngmt/service/StorageService.java`

### Publishing

- [Account management](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/InstagramAuthService.java): `backend/src/main/java/com/instamngmt/service/InstagramAuthService.java`
- [Instagram API client](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/InstagramClientService.java): `backend/src/main/java/com/instamngmt/service/InstagramClientService.java`
- [Outbox poller](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/scheduler/OutboxPollerScheduler.java): `backend/src/main/java/com/instamngmt/scheduler/OutboxPollerScheduler.java`
- [Publishing worker](https://github.com/kushalkumar12/social-media-mgmnt/blob/main/backend/src/main/java/com/instamngmt/service/InstagramPublishingWorker.java): `backend/src/main/java/com/instamngmt/service/InstagramPublishingWorker.java`

### Application data

- **Application database**

### Other components

- **User**
- **Meta Graph API**

## Connections

- User → Application routes: uses
- Application routes → Session context: provides session
- Application routes → Post and calendar pages: routes
- Application routes → Post composer: routes
- Application routes → Media page: routes
- Application routes → Account connection: routes
- Application routes → Dashboard: routes
- Post and calendar pages → API client: requests
- Post composer → API client: requests
- Media page → API client: requests
- Account connection → API client: requests
- Dashboard → API client: requests
- Excel client → API client: requests
- API client → Post endpoints: HTTP requests
- API client → Instagram endpoints: HTTP requests
- API client → Authentication endpoints: HTTP requests
- Post endpoints → Authentication service: resolves user
- Post endpoints → Post scheduling: dispatches posts
- Post endpoints → Excel import: dispatches imports
- Instagram endpoints → Authentication service: resolves user
- Instagram endpoints → Account management: dispatches accounts
- Authentication endpoints → Authentication service: dispatches auth
- Authentication service → JWT security: issues tokens
- Post scheduling → Application database: post state
- Excel import → Application database: batch and posts
- Media management → File storage: stores files
- Media management → Application database: media records
- Account management → Application database: account records
- Account management → Instagram API client: verifies account
- Instagram API client → Meta Graph API: Graph API calls
- Outbox poller → Publishing worker: dispatches jobs
- Publishing worker → Instagram API client: publishes media
- Publishing worker → Application database: job and attempt state
- Account groups → Application database: group data
- Site settings → Application database: settings data
- Dashboard API → Application database: dashboard data
