# izumidkc/microservices-project architecture

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

- Interactive diagram: https://gitdiagram.com/izumidkc/microservices-project
- Repository: https://github.com/izumidkc/microservices-project

## Overview

This is a Spring microservices backend for a social network, with an additional farming game. The main user workflow enters through the API Gateway, reaches user and post services, and supports profiles/follows, feed and post interactions, with notifications sent by the notification service. Chat and game are distinct capabilities. Source excerpts show several internal service calls; gateway routing and service discovery are documented in the README, while some service wiring and storage details are not sampled.

Main entry points: [`post-service/src/main/java/com/social/post_service/service/PostService.java`](https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/service/PostService.java) (Posts and Feed), [`api-gateway/src/main/java/com/social/api_gateway/ApiGatewayApplication.java`](https://github.com/izumidkc/microservices-project/blob/main/api-gateway/src/main/java/com/social/api_gateway/ApiGatewayApplication.java) (API Gateway), [`post-service/src/main/java/com/social/post_service/controller/PostController.java`](https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/controller/PostController.java) (Post API), [`post-service/src/main/java/com/social/post_service/service/CommentService.java`](https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/service/CommentService.java) (Comments)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["Platform Entry"]
  node_gateway["API Gateway"]
  node_discovery["Service Discovery"]
end

subgraph group_identity["Users and Reports"]
  node_user_api["User API"]
  node_user_service["Profiles and Follows<br/>[UserService.java]"]
  node_user_store[("User Data")]
  node_user_reports["User Reports"]
end

subgraph group_social["Social Content"]
  node_post_api["Post API"]
  node_post_service["Posts and Feed<br/>[PostService.java]"]
  node_post_store[("Post Data")]
  node_comments["Comments"]
  node_comment_store[("Comment Data")]
  node_post_reports["Post Reports<br/>[ReportService.java]"]
  node_user_client["User Client<br/>[UserClient.java]"]
  node_notification_client["Notification Client"]
end

subgraph group_realtime["Realtime Messaging"]
  node_notification_api["Notification API"]
  node_notification_service["Notification Delivery"]
  node_notification_store[("Notification Data")]
  node_chat_api["Chat API"]
  node_chat_store[("Chat Messages")]
end

subgraph group_game["Farm Game"]
  node_game_api["Game API"]
  node_game_service["Farm Gameplay<br/>[GameService.java]"]
  node_farm_store[("Farm Data")]
  node_plant_data["Plant Config Cache"]
  node_plant_store[("Plant Config Data")]
end

node_actor(("Social User"))

node_actor -->|"sends requests"| node_gateway
node_gateway -.->|"uses discovery"| node_discovery
node_gateway -->|"routes requests"| node_user_api
node_gateway -->|"routes requests"| node_post_api
node_user_api -->|"delegates to"| node_user_service
node_user_service -->|"reads and writes"| node_user_store
node_user_reports -->|"reads users"| node_user_store
node_post_api -->|"delegates to"| node_post_service
node_post_api -->|"delegates to"| node_comments
node_post_api -->|"resolves user IDs"| node_user_client
node_post_service -->|"reads and writes"| node_post_store
node_post_service -->|"reads and writes"| node_comment_store
node_post_service -->|"looks up users"| node_user_client
node_post_service -->|"sends alerts"| node_notification_client
node_comments -->|"reads and writes"| node_comment_store
node_comments -->|"updates counts"| node_post_store
node_comments -->|"fetches author details"| node_user_client
node_post_reports -->|"reads posts"| node_post_store
node_notification_api -->|"delegates to"| node_notification_service
node_notification_service -->|"saves notifications"| node_notification_store
node_notification_client -.->|"requests delivery"| node_notification_api
node_chat_api -->|"reads and writes"| node_chat_store
node_actor -.->|"chats and marks seen"| node_chat_api
node_actor -.->|"plays farming game"| node_game_api
node_game_api -->|"delegates gameplay"| node_game_service
node_game_api -->|"gets and reloads config"| node_plant_data
node_game_service -->|"reads and saves farms"| node_farm_store
node_game_service -->|"gets plant config"| node_plant_data
node_plant_data -->|"loads configs"| node_plant_store

click node_gateway "https://github.com/izumidkc/microservices-project/blob/main/api-gateway/src/main/java/com/social/api_gateway/ApiGatewayApplication.java"
click node_discovery "https://github.com/izumidkc/microservices-project/blob/main/discovery-server/src/main/java/com/social/discovery_server/DiscoveryServerApplication.java"
click node_user_api "https://github.com/izumidkc/microservices-project/blob/main/user-service/src/main/java/com/social/user_service/controller/UserController.java"
click node_user_service "https://github.com/izumidkc/microservices-project/blob/main/user-service/src/main/java/com/social/user_service/service/UserService.java"
click node_user_store "https://github.com/izumidkc/microservices-project/blob/main/user-service/src/main/java/com/social/user_service/repository/AppUserRepository.java"
click node_user_reports "https://github.com/izumidkc/microservices-project/blob/main/user-service/src/main/java/com/social/user_service/service/UserReportService.java"
click node_post_api "https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/controller/PostController.java"
click node_post_service "https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/service/PostService.java"
click node_post_store "https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/repository/PostRepository.java"
click node_comments "https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/service/CommentService.java"
click node_comment_store "https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/repository/CommentRepository.java"
click node_post_reports "https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/service/ReportService.java"
click node_user_client "https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/client/UserClient.java"
click node_notification_client "https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/client/NotificationClient.java"
click node_notification_api "https://github.com/izumidkc/microservices-project/blob/main/notification-service/src/main/java/com/social/notification_service/controller/NotificationController.java"
click node_notification_service "https://github.com/izumidkc/microservices-project/blob/main/notification-service/src/main/java/com/social/notification_service/service/NotificationService.java"
click node_notification_store "https://github.com/izumidkc/microservices-project/blob/main/notification-service/src/main/java/com/social/notification_service/repository/NotificationRepository.java"
click node_chat_api "https://github.com/izumidkc/microservices-project/blob/main/chat-service/src/main/java/com/social/chat_service/controller/ChatController.java"
click node_chat_store "https://github.com/izumidkc/microservices-project/blob/main/chat-service/src/main/java/com/social/chat_service/repository/ChatMessageRepository.java"
click node_game_api "https://github.com/izumidkc/microservices-project/blob/main/game-service/src/main/java/com/social/game_service/controller/GameController.java"
click node_game_service "https://github.com/izumidkc/microservices-project/blob/main/game-service/src/main/java/com/social/game_service/service/GameService.java"
click node_farm_store "https://github.com/izumidkc/microservices-project/blob/main/game-service/src/main/java/com/social/game_service/repository/FarmRepository.java"
click node_plant_data "https://github.com/izumidkc/microservices-project/blob/main/game-service/src/main/java/com/social/game_service/service/PlantDataManager.java"
click node_plant_store "https://github.com/izumidkc/microservices-project/blob/main/game-service/src/main/java/com/social/game_service/repository/PlantConfigRepository.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_gateway,node_discovery,node_actor toneBlue
class node_user_api,node_user_service,node_user_store,node_user_reports toneAmber
class node_post_api,node_post_service,node_post_store,node_comments,node_comment_store,node_post_reports,node_user_client,node_notification_client toneMint
class node_notification_api,node_notification_service,node_notification_store,node_chat_api,node_chat_store toneRose
class node_game_api,node_game_service,node_farm_store,node_plant_data,node_plant_store toneIndigo
```

## Components

### Platform Entry

- [API Gateway](https://github.com/izumidkc/microservices-project/blob/main/api-gateway/src/main/java/com/social/api_gateway/ApiGatewayApplication.java): `api-gateway/src/main/java/com/social/api_gateway/ApiGatewayApplication.java`
- [Service Discovery](https://github.com/izumidkc/microservices-project/blob/main/discovery-server/src/main/java/com/social/discovery_server/DiscoveryServerApplication.java): `discovery-server/src/main/java/com/social/discovery_server/DiscoveryServerApplication.java`

### Users and Reports

- [User API](https://github.com/izumidkc/microservices-project/blob/main/user-service/src/main/java/com/social/user_service/controller/UserController.java): `user-service/src/main/java/com/social/user_service/controller/UserController.java`
- [Profiles and Follows](https://github.com/izumidkc/microservices-project/blob/main/user-service/src/main/java/com/social/user_service/service/UserService.java): `user-service/src/main/java/com/social/user_service/service/UserService.java`
- [User Data](https://github.com/izumidkc/microservices-project/blob/main/user-service/src/main/java/com/social/user_service/repository/AppUserRepository.java): `user-service/src/main/java/com/social/user_service/repository/AppUserRepository.java`
- [User Reports](https://github.com/izumidkc/microservices-project/blob/main/user-service/src/main/java/com/social/user_service/service/UserReportService.java): `user-service/src/main/java/com/social/user_service/service/UserReportService.java`

### Social Content

- [Post API](https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/controller/PostController.java): `post-service/src/main/java/com/social/post_service/controller/PostController.java`
- [Posts and Feed](https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/service/PostService.java): `post-service/src/main/java/com/social/post_service/service/PostService.java`
- [Post Data](https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/repository/PostRepository.java): `post-service/src/main/java/com/social/post_service/repository/PostRepository.java`
- [Comments](https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/service/CommentService.java): `post-service/src/main/java/com/social/post_service/service/CommentService.java`
- [Comment Data](https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/repository/CommentRepository.java): `post-service/src/main/java/com/social/post_service/repository/CommentRepository.java`
- [Post Reports](https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/service/ReportService.java): `post-service/src/main/java/com/social/post_service/service/ReportService.java`
- [User Client](https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/client/UserClient.java): `post-service/src/main/java/com/social/post_service/client/UserClient.java`
- [Notification Client](https://github.com/izumidkc/microservices-project/blob/main/post-service/src/main/java/com/social/post_service/client/NotificationClient.java): `post-service/src/main/java/com/social/post_service/client/NotificationClient.java`

### Realtime Messaging

- [Notification API](https://github.com/izumidkc/microservices-project/blob/main/notification-service/src/main/java/com/social/notification_service/controller/NotificationController.java): `notification-service/src/main/java/com/social/notification_service/controller/NotificationController.java`
- [Notification Delivery](https://github.com/izumidkc/microservices-project/blob/main/notification-service/src/main/java/com/social/notification_service/service/NotificationService.java): `notification-service/src/main/java/com/social/notification_service/service/NotificationService.java`
- [Notification Data](https://github.com/izumidkc/microservices-project/blob/main/notification-service/src/main/java/com/social/notification_service/repository/NotificationRepository.java): `notification-service/src/main/java/com/social/notification_service/repository/NotificationRepository.java`
- [Chat API](https://github.com/izumidkc/microservices-project/blob/main/chat-service/src/main/java/com/social/chat_service/controller/ChatController.java): `chat-service/src/main/java/com/social/chat_service/controller/ChatController.java`
- [Chat Messages](https://github.com/izumidkc/microservices-project/blob/main/chat-service/src/main/java/com/social/chat_service/repository/ChatMessageRepository.java): `chat-service/src/main/java/com/social/chat_service/repository/ChatMessageRepository.java`

### Farm Game

- [Game API](https://github.com/izumidkc/microservices-project/blob/main/game-service/src/main/java/com/social/game_service/controller/GameController.java): `game-service/src/main/java/com/social/game_service/controller/GameController.java`
- [Farm Gameplay](https://github.com/izumidkc/microservices-project/blob/main/game-service/src/main/java/com/social/game_service/service/GameService.java): `game-service/src/main/java/com/social/game_service/service/GameService.java`
- [Farm Data](https://github.com/izumidkc/microservices-project/blob/main/game-service/src/main/java/com/social/game_service/repository/FarmRepository.java): `game-service/src/main/java/com/social/game_service/repository/FarmRepository.java`
- [Plant Config Cache](https://github.com/izumidkc/microservices-project/blob/main/game-service/src/main/java/com/social/game_service/service/PlantDataManager.java): `game-service/src/main/java/com/social/game_service/service/PlantDataManager.java`
- [Plant Config Data](https://github.com/izumidkc/microservices-project/blob/main/game-service/src/main/java/com/social/game_service/repository/PlantConfigRepository.java): `game-service/src/main/java/com/social/game_service/repository/PlantConfigRepository.java`

### Other components

- **Social User**

## Connections

- Social User → API Gateway: sends requests
- API Gateway → Service Discovery: uses discovery
- API Gateway → User API: routes requests
- API Gateway → Post API: routes requests
- User API → Profiles and Follows: delegates to (evidence: `user-service/src/main/java/com/social/user_service/controller/UserController.java`)
- Profiles and Follows → User Data: reads and writes (evidence: `user-service/src/main/java/com/social/user_service/service/UserService.java`)
- User Reports → User Data: reads users (evidence: `user-service/src/main/java/com/social/user_service/service/UserReportService.java`)
- Post API → Posts and Feed: delegates to (evidence: `post-service/src/main/java/com/social/post_service/controller/PostController.java`)
- Post API → Comments: delegates to (evidence: `post-service/src/main/java/com/social/post_service/controller/PostController.java`)
- Post API → User Client: resolves user IDs (evidence: `post-service/src/main/java/com/social/post_service/controller/PostController.java`)
- Posts and Feed → Post Data: reads and writes (evidence: `post-service/src/main/java/com/social/post_service/service/PostService.java`)
- Posts and Feed → Comment Data: reads and writes (evidence: `post-service/src/main/java/com/social/post_service/service/PostService.java`)
- Posts and Feed → User Client: looks up users (evidence: `post-service/src/main/java/com/social/post_service/service/PostService.java`)
- Posts and Feed → Notification Client: sends alerts (evidence: `post-service/src/main/java/com/social/post_service/service/PostService.java`)
- Comments → Comment Data: reads and writes (evidence: `post-service/src/main/java/com/social/post_service/service/CommentService.java`)
- Comments → Post Data: updates counts (evidence: `post-service/src/main/java/com/social/post_service/service/CommentService.java`)
- Comments → User Client: fetches author details (evidence: `post-service/src/main/java/com/social/post_service/service/CommentService.java`)
- Post Reports → Post Data: reads posts (evidence: `post-service/src/main/java/com/social/post_service/service/ReportService.java`)
- Notification API → Notification Delivery: delegates to (evidence: `notification-service/src/main/java/com/social/notification_service/controller/NotificationController.java`)
- Notification Delivery → Notification Data: saves notifications (evidence: `notification-service/src/main/java/com/social/notification_service/service/NotificationService.java`)
- Notification Client → Notification API: requests delivery
- Chat API → Chat Messages: reads and writes (evidence: `chat-service/src/main/java/com/social/chat_service/controller/ChatController.java`)
- Social User → Chat API: chats and marks seen
- Social User → Game API: plays farming game
- Game API → Farm Gameplay: delegates gameplay (evidence: `game-service/src/main/java/com/social/game_service/controller/GameController.java`)
- Game API → Plant Config Cache: gets and reloads config (evidence: `game-service/src/main/java/com/social/game_service/controller/GameController.java`)
- Farm Gameplay → Farm Data: reads and saves farms (evidence: `game-service/src/main/java/com/social/game_service/service/GameService.java`)
- Farm Gameplay → Plant Config Cache: gets plant config (evidence: `game-service/src/main/java/com/social/game_service/service/GameService.java`)
- Plant Config Cache → Plant Config Data: loads configs (evidence: `game-service/src/main/java/com/social/game_service/service/PlantDataManager.java`)
