# fds0601/content-community architecture

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

- Interactive diagram: https://gitdiagram.com/fds0601/content-community
- Repository: https://github.com/fds0601/content-community

## Overview

This is a Spring Boot content-community backend. The principal workflow is user registration/login and JWT-authenticated requests, followed by article publishing and management, with comments and likes as interaction stages. Article details are cached in Redis, while MyBatis-Plus persists application data to MySQL. The README documents these capabilities and the layer layout, but no source excerpts were available, so wiring beyond those documented layers is kept conservative.

Main entry points: [`src/main/java/com/example/community/service/ArticleService.java`](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/service/ArticleService.java) (Article services), [`src/main/java/com/example/community/controller/UserController.java`](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/controller/UserController.java) (User endpoints), [`src/main/java/com/example/community/controller/ArticleController.java`](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/controller/ArticleController.java) (Article endpoints), [`src/main/java/com/example/community/service/UserService.java`](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/service/UserService.java) (User services)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API layer"]
  node_user_api["User endpoints"]
  node_article_api["Article endpoints"]
  node_openapi["API documentation<br/>[OpenApiConfig.java]"]
  node_result["Response envelope<br/>[Result.java]"]
  node_exception_handler["Exception handling"]
end

subgraph group_domain["Community domain"]
  node_user_service["User services<br/>[UserService.java]"]
  node_article_service["Article services"]
end

subgraph group_security["Authentication and security"]
  node_security_config["Security configuration"]
  node_jwt_filter["JWT request filter<br/>[JwtAuthFilter.java]"]
  node_jwt_util["JWT utilities<br/>[JwtUtil.java]"]
  node_user_context["User context<br/>[UserContext.java]"]
end

subgraph group_infra["Persistence and platform"]
  node_user_mapper["User persistence<br/>[UserMapper.java]"]
  node_article_mapper["Article persistence<br/>[ArticleMapper.java]"]
  node_comment_mapper["Comment persistence<br/>[CommentMapper.java]"]
  node_like_mapper["Like persistence"]
  node_mysql[("MySQL database")]
  node_redis[("Redis cache")]
end

node_user(("Community user"))

node_user -->|"sends requests"| node_user_api
node_user -->|"sends requests"| node_article_api
node_user_api -->|"delegates"| node_user_service
node_article_api -->|"delegates"| node_article_service
node_user_service -->|"uses persistence"| node_user_mapper
node_article_service -->|"uses persistence"| node_article_mapper
node_article_service -->|"uses persistence"| node_comment_mapper
node_article_service -->|"uses persistence"| node_like_mapper
node_user_mapper -->|"persists data"| node_mysql
node_article_mapper -->|"persists data"| node_mysql
node_comment_mapper -->|"persists data"| node_mysql
node_like_mapper -->|"persists data"| node_mysql
node_article_service -->|"caches article details"| node_redis
node_security_config -->|"configures filter"| node_jwt_filter
node_jwt_filter -->|"uses JWT"| node_jwt_util

click node_user_api "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/controller/UserController.java"
click node_article_api "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/controller/ArticleController.java"
click node_user_service "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/service/UserService.java"
click node_article_service "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/service/ArticleService.java"
click node_user_mapper "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/mapper/UserMapper.java"
click node_article_mapper "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/mapper/ArticleMapper.java"
click node_comment_mapper "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/mapper/CommentMapper.java"
click node_like_mapper "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/mapper/ArticleLikeMapper.java"
click node_security_config "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/config/SecurityConfig.java"
click node_jwt_filter "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/config/JwtAuthFilter.java"
click node_jwt_util "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/util/JwtUtil.java"
click node_user_context "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/util/UserContext.java"
click node_openapi "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/config/OpenApiConfig.java"
click node_result "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/common/Result.java"
click node_exception_handler "https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/common/GlobalExceptionHandler.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_user_api,node_article_api,node_openapi,node_result,node_exception_handler,node_user toneBlue
class node_user_service,node_article_service toneAmber
class node_security_config,node_jwt_filter,node_jwt_util,node_user_context toneMint
class node_user_mapper,node_article_mapper,node_comment_mapper,node_like_mapper,node_mysql,node_redis toneRose
```

## Components

### API layer

- [User endpoints](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/controller/UserController.java): `src/main/java/com/example/community/controller/UserController.java`
- [Article endpoints](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/controller/ArticleController.java): `src/main/java/com/example/community/controller/ArticleController.java`
- [API documentation](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/config/OpenApiConfig.java): `src/main/java/com/example/community/config/OpenApiConfig.java`
- [Response envelope](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/common/Result.java): `src/main/java/com/example/community/common/Result.java`
- [Exception handling](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/common/GlobalExceptionHandler.java): `src/main/java/com/example/community/common/GlobalExceptionHandler.java`

### Community domain

- [User services](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/service/UserService.java): `src/main/java/com/example/community/service/UserService.java`
- [Article services](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/service/ArticleService.java): `src/main/java/com/example/community/service/ArticleService.java`

### Authentication and security

- [Security configuration](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/config/SecurityConfig.java): `src/main/java/com/example/community/config/SecurityConfig.java`
- [JWT request filter](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/config/JwtAuthFilter.java): `src/main/java/com/example/community/config/JwtAuthFilter.java`
- [JWT utilities](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/util/JwtUtil.java): `src/main/java/com/example/community/util/JwtUtil.java`
- [User context](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/util/UserContext.java): `src/main/java/com/example/community/util/UserContext.java`

### Persistence and platform

- [User persistence](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/mapper/UserMapper.java): `src/main/java/com/example/community/mapper/UserMapper.java`
- [Article persistence](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/mapper/ArticleMapper.java): `src/main/java/com/example/community/mapper/ArticleMapper.java`
- [Comment persistence](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/mapper/CommentMapper.java): `src/main/java/com/example/community/mapper/CommentMapper.java`
- [Like persistence](https://github.com/fds0601/content-community/blob/main/src/main/java/com/example/community/mapper/ArticleLikeMapper.java): `src/main/java/com/example/community/mapper/ArticleLikeMapper.java`
- **MySQL database**
- **Redis cache**

### Other components

- **Community user**

## Connections

- Community user → User endpoints: sends requests
- Community user → Article endpoints: sends requests
- User endpoints → User services: delegates
- Article endpoints → Article services: delegates
- User services → User persistence: uses persistence
- Article services → Article persistence: uses persistence
- Article services → Comment persistence: uses persistence
- Article services → Like persistence: uses persistence
- User persistence → MySQL database: persists data
- Article persistence → MySQL database: persists data
- Comment persistence → MySQL database: persists data
- Like persistence → MySQL database: persists data
- Article services → Redis cache: caches article details
- Security configuration → JWT request filter: configures filter
- JWT request filter → JWT utilities: uses JWT
