# liqifang/xiaofangshu architecture

> Architecture diagram of the GitHub repository liqifang/xiaofangshu, 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/liqifang/xiaofangshu
- Repository: https://github.com/liqifang/xiaofangshu

## Overview

小仿书 is a distributed social-content platform. Its main user journey is authentication and profile lookup, followed by publishing or reading notes and interacting through likes, collections, and comments; asynchronous consumers update persisted content and engagement counts. The graph also includes search/index rebuilding, short-text storage, and ID generation as distinct supporting capabilities. The tree and excerpts do not expose gateway, note implementation, relationship-service, or OSS source, so those README-described capabilities are not assigned speculative code paths or call links.

Main entry points: [`xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/service/AuthService.java`](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/service/AuthService.java) (Authentication), [`xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/service/CommentService.java`](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/service/CommentService.java) (Comment service), [`xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/consumer`](https://github.com/liqifang/xiaofangshu/tree/master/xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/consumer) (Comment consumers), [`xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/controller/AuthController.java`](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/controller/AuthController.java) (Auth API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity"]
  node_auth_api["Auth API"]
  node_auth_service["Authentication<br/>[AuthService.java]"]
  node_auth_user_rpc["User RPC"]
  node_user_service["User service<br/>[UserService.java]"]
end

subgraph group_content["Content"]
  node_note_service["Note service<br/>[NoteService.java]"]
  node_note_kv_rpc["Note KV RPC"]
  node_comment_service["Comment service"]
  node_comment_kv_rpc["Comment KV RPC"]
  node_comment_consumers["Comment consumers"]
end

subgraph group_engagement["Engagement"]
  node_count_service["Count service"]
  node_count_consumers["Count consumers"]
end

subgraph group_platform["Platform services"]
  node_kv_service["Short-text storage"]
  node_data_align["Data alignment"]
  node_search_rpc["Search RPC"]
  node_search_service["Search service<br/>[UserService.java]"]
  node_id_api["ID API"]
  node_id_core["ID generation"]
end

node_user(("User"))
node_sms["Aliyun SMS"]
node_message_queue["RocketMQ"]
node_database[("Relational database")]

node_user -->|"requests login"| node_auth_api
node_auth_api -->|"delegates auth"| node_auth_service
node_auth_service -->|"looks up or registers"| node_auth_user_rpc
node_auth_user_rpc -->|"Feign calls"| node_user_service
node_auth_service -.->|"sends verification codes"| node_sms
node_user -->|"uses notes"| node_note_service
node_note_service -->|"stores note text"| node_note_kv_rpc
node_note_kv_rpc -->|"Feign calls"| node_kv_service
node_user -->|"comments"| node_comment_service
node_comment_service -->|"stores comment text"| node_comment_kv_rpc
node_comment_kv_rpc -->|"Feign calls"| node_kv_service
node_comment_service -->|"publishes work"| node_message_queue
node_message_queue -->|"dispatches messages"| node_comment_consumers
node_comment_consumers -->|"writes comment records"| node_database
node_comment_consumers -->|"updates comment counts"| node_count_service
node_message_queue -->|"dispatches count events"| node_count_consumers
node_count_consumers -->|"persists aggregates"| node_database
node_data_align -->|"requests document rebuild"| node_search_rpc
node_search_rpc -->|"Feign calls"| node_search_service
node_user_service -->|"requests user IDs"| node_id_api
node_id_api -->|"generates IDs"| node_id_core

click node_auth_api "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/controller/AuthController.java"
click node_auth_service "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/service/AuthService.java"
click node_auth_user_rpc "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/rpc/UserRpcService.java"
click node_user_service "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-user/xiaofangshu-user-biz/src/main/java/com/lqf/xiaofangshu/user/biz/service/UserService.java"
click node_note_service "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-note/xiaofangshu-note-biz/src/main/java/com/lqf/xiaofangshu/note/biz/service/NoteService.java"
click node_note_kv_rpc "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-note/xiaofangshu-note-biz/src/main/java/com/lqf/xiaofangshu/note/biz/rpc/KeyValueRpcService.java"
click node_comment_service "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/service/CommentService.java"
click node_comment_kv_rpc "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/rpc/KeyValueRpcService.java"
click node_comment_consumers "https://github.com/liqifang/xiaofangshu/tree/master/xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/consumer"
click node_kv_service "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-kv/xiaofangshu-kv-biz/src/main/java/com/lqf/xiaofangshu/kv/biz/service/CommentContentService.java"
click node_count_service "https://github.com/liqifang/xiaofangshu/tree/master/xiaofangshu-count/xiaofangshu-count-biz/src/main/java/com/lqf/xiaofangshu/count/biz/service"
click node_count_consumers "https://github.com/liqifang/xiaofangshu/tree/master/xiaofangshu-count/xiaofangshu-count-biz/src/main/java/com/lqf/xiaofangshu/count/biz/consumer"
click node_data_align "https://github.com/liqifang/xiaofangshu/tree/master/xiaofangshu-data-align/src/main/java/com/lqf/xiaofangshu/data/align/job"
click node_search_rpc "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-data-align/src/main/java/com/lqf/xiaofangshu/data/align/rpc/SearchRpcService.java"
click node_search_service "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-search/xiaofangshu-search-biz/src/main/java/com/lqf/xiaofangshu/search/biz/service/UserService.java"
click node_id_api "https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-distributed-id-generator/xiaofangshu-distributed-id-generator-biz/src/main/java/com/lqf/xiaofangshu/distributed/id/generator/biz/controller/LeafController.java"
click node_id_core "https://github.com/liqifang/xiaofangshu/tree/master/xiaofangshu-distributed-id-generator/xiaofangshu-distributed-id-generator-biz/src/main/java/com/lqf/xiaofangshu/distributed/id/generator/biz/core"

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_auth_api,node_auth_service,node_auth_user_rpc,node_user_service,node_user toneBlue
class node_note_service,node_note_kv_rpc,node_comment_service,node_comment_kv_rpc,node_comment_consumers,node_database toneAmber
class node_count_service,node_count_consumers toneMint
class node_kv_service,node_data_align,node_search_rpc,node_search_service,node_id_api,node_id_core toneRose
class node_sms,node_message_queue toneIndigo
```

## Components

### Identity

- [Auth API](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/controller/AuthController.java): `xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/controller/AuthController.java`
- [Authentication](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/service/AuthService.java): `xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/service/AuthService.java`
- [User RPC](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/rpc/UserRpcService.java): `xiaofangshu-auth/src/main/java/com/lqf/xiaofangshu/auth/rpc/UserRpcService.java`
- [User service](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-user/xiaofangshu-user-biz/src/main/java/com/lqf/xiaofangshu/user/biz/service/UserService.java): `xiaofangshu-user/xiaofangshu-user-biz/src/main/java/com/lqf/xiaofangshu/user/biz/service/UserService.java`

### Content

- [Note service](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-note/xiaofangshu-note-biz/src/main/java/com/lqf/xiaofangshu/note/biz/service/NoteService.java): `xiaofangshu-note/xiaofangshu-note-biz/src/main/java/com/lqf/xiaofangshu/note/biz/service/NoteService.java`
- [Note KV RPC](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-note/xiaofangshu-note-biz/src/main/java/com/lqf/xiaofangshu/note/biz/rpc/KeyValueRpcService.java): `xiaofangshu-note/xiaofangshu-note-biz/src/main/java/com/lqf/xiaofangshu/note/biz/rpc/KeyValueRpcService.java`
- [Comment service](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/service/CommentService.java): `xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/service/CommentService.java`
- [Comment KV RPC](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/rpc/KeyValueRpcService.java): `xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/rpc/KeyValueRpcService.java`
- [Comment consumers](https://github.com/liqifang/xiaofangshu/tree/master/xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/consumer): `xiaofangshu-comment/xiaofangshu-comment-biz/src/main/java/com/lqf/xiaofangshu/comment/biz/consumer`

### Engagement

- [Count service](https://github.com/liqifang/xiaofangshu/tree/master/xiaofangshu-count/xiaofangshu-count-biz/src/main/java/com/lqf/xiaofangshu/count/biz/service): `xiaofangshu-count/xiaofangshu-count-biz/src/main/java/com/lqf/xiaofangshu/count/biz/service`
- [Count consumers](https://github.com/liqifang/xiaofangshu/tree/master/xiaofangshu-count/xiaofangshu-count-biz/src/main/java/com/lqf/xiaofangshu/count/biz/consumer): `xiaofangshu-count/xiaofangshu-count-biz/src/main/java/com/lqf/xiaofangshu/count/biz/consumer`

### Platform services

- [Short-text storage](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-kv/xiaofangshu-kv-biz/src/main/java/com/lqf/xiaofangshu/kv/biz/service/CommentContentService.java): `xiaofangshu-kv/xiaofangshu-kv-biz/src/main/java/com/lqf/xiaofangshu/kv/biz/service/CommentContentService.java`
- [Data alignment](https://github.com/liqifang/xiaofangshu/tree/master/xiaofangshu-data-align/src/main/java/com/lqf/xiaofangshu/data/align/job): `xiaofangshu-data-align/src/main/java/com/lqf/xiaofangshu/data/align/job`
- [Search RPC](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-data-align/src/main/java/com/lqf/xiaofangshu/data/align/rpc/SearchRpcService.java): `xiaofangshu-data-align/src/main/java/com/lqf/xiaofangshu/data/align/rpc/SearchRpcService.java`
- [Search service](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-search/xiaofangshu-search-biz/src/main/java/com/lqf/xiaofangshu/search/biz/service/UserService.java): `xiaofangshu-search/xiaofangshu-search-biz/src/main/java/com/lqf/xiaofangshu/search/biz/service/UserService.java`
- [ID API](https://github.com/liqifang/xiaofangshu/blob/master/xiaofangshu-distributed-id-generator/xiaofangshu-distributed-id-generator-biz/src/main/java/com/lqf/xiaofangshu/distributed/id/generator/biz/controller/LeafController.java): `xiaofangshu-distributed-id-generator/xiaofangshu-distributed-id-generator-biz/src/main/java/com/lqf/xiaofangshu/distributed/id/generator/biz/controller/LeafController.java`
- [ID generation](https://github.com/liqifang/xiaofangshu/tree/master/xiaofangshu-distributed-id-generator/xiaofangshu-distributed-id-generator-biz/src/main/java/com/lqf/xiaofangshu/distributed/id/generator/biz/core): `xiaofangshu-distributed-id-generator/xiaofangshu-distributed-id-generator-biz/src/main/java/com/lqf/xiaofangshu/distributed/id/generator/biz/core`

### Other components

- **User**
- **Aliyun SMS**
- **RocketMQ**
- **Relational database**

## Connections

- User → Auth API: requests login
- Auth API → Authentication: delegates auth
- Authentication → User RPC: looks up or registers
- User RPC → User service: Feign calls
- Authentication → Aliyun SMS: sends verification codes
- User → Note service: uses notes
- Note service → Note KV RPC: stores note text
- Note KV RPC → Short-text storage: Feign calls
- User → Comment service: comments
- Comment service → Comment KV RPC: stores comment text
- Comment KV RPC → Short-text storage: Feign calls
- Comment service → RocketMQ: publishes work
- RocketMQ → Comment consumers: dispatches messages
- Comment consumers → Relational database: writes comment records
- Comment consumers → Count service: updates comment counts
- RocketMQ → Count consumers: dispatches count events
- Count consumers → Relational database: persists aggregates
- Data alignment → Search RPC: requests document rebuild
- Search RPC → Search service: Feign calls
- User service → ID API: requests user IDs
- ID API → ID generation: generates IDs
