# imethmakariyawasam/miniblog-micro architecture

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

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

## Overview

miniblog-micro is a three-service blogging backend. Users register or log in through the user service, which persists accounts and issues JWTs; authenticated comment requests are accepted by the comment service, which checks post existence through the post service before storing comments. The post service independently exposes post CRUD. The graph emphasizes these request paths and the persistence/authentication layers. README provides no further capability detail, and unsampled service wiring is not inferred.

Main entry points: [`user-service/src/main/java/com/miniblog/user_service/controller/AuthController.java`](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/controller/AuthController.java) (Authentication API), [`comment-service/src/main/java/com/miniblog/comment_service/service/CommentService.java`](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/service/CommentService.java) (Comment Workflow), [`comment-service/src/main/java/com/miniblog/comment_service/controller/CommentController.java`](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/controller/CommentController.java) (Comments API), [`user-service/src/main/java/com/miniblog/user_service/service/CustomUserDetailsService.java`](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/service/CustomUserDetailsService.java) (User Details Lookup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_users["User and Auth"]
  node_auth["Authentication API"]
  node_userdb[("User Records")]
  node_userdetails["User Details Lookup"]
  node_userinfo["User Entity<br/>[User.java]"]
  node_authdto["Auth DTOs"]
end

subgraph group_posts["Post Management"]
  node_postapi["Posts API"]
  node_postdb[("Post Records")]
  node_postmodel["Post Entity<br/>[Post.java]"]
end

subgraph group_comments["Comment Management"]
  node_commentapi["Comments API"]
  node_commentservice["Comment Workflow"]
  node_postclient["Post Existence Client"]
  node_commentdb[("Comment Records")]
  node_commentmodel["Comment Entity<br/>[Comment.java]"]
  node_commentdto["Comment Request"]
  node_postnotfound["Missing Post Error"]
end

subgraph group_security["Token Security"]
  node_jwtissuer["JWT Issuer<br/>[JwtService.java]"]
  node_userfilter["User JWT Filter<br/>[JwtAuthFilter.java]"]
  node_userconfig["User Security Config"]
  node_commentfilter["Comment JWT Filter<br/>[JwtAuthFilter.java]"]
  node_commentjwt["Comment Token Validator<br/>[JwtService.java]"]
end

node_client(("API Client"))

node_client -->|"registers or logs in"| node_auth
node_auth -->|"reads and saves"| node_userdb
node_auth -->|"creates user"| node_userinfo
node_auth -->|"issues token"| node_jwtissuer
node_auth -->|"uses request and response"| node_authdto
node_userdetails -->|"loads account"| node_userdb
node_userdetails -->|"returns account"| node_userinfo
node_userfilter -->|"validates token"| node_jwtissuer
node_userfilter -->|"loads identity"| node_userdetails
node_client -->|"manages posts"| node_postapi
node_postapi -->|"reads and writes"| node_postdb
node_postdb -->|"persists"| node_postmodel
node_client -->|"requests comments"| node_commentapi
node_commentapi -->|"delegates"| node_commentservice
node_commentapi -->|"accepts request"| node_commentdto
node_commentservice -->|"checks post"| node_postclient
node_postclient -.->|"queries existence"| node_postapi
node_commentservice -->|"reads and saves"| node_commentdb
node_commentservice -->|"constructs comment"| node_commentmodel
node_commentdb -->|"persists"| node_commentmodel
node_commentfilter -->|"validates token"| node_commentjwt
node_commentservice -->|"raises when absent"| node_postnotfound

click node_auth "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/controller/AuthController.java"
click node_userdb "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/repository/UserRepository.java"
click node_userdetails "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/service/CustomUserDetailsService.java"
click node_userinfo "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/model/User.java"
click node_authdto "https://github.com/imethmakariyawasam/miniblog-micro/tree/main/user-service/src/main/java/com/miniblog/user_service/dto"
click node_jwtissuer "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/service/JwtService.java"
click node_userfilter "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/security/JwtAuthFilter.java"
click node_userconfig "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/security/SecurityConfig.java"
click node_postapi "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/post-service/src/main/java/com/miniblog/post_service/controller/PostController.java"
click node_postdb "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/post-service/src/main/java/com/miniblog/post_service/repository/PostRepository.java"
click node_postmodel "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/post-service/src/main/java/com/miniblog/post_service/model/Post.java"
click node_commentapi "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/controller/CommentController.java"
click node_commentservice "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/service/CommentService.java"
click node_postclient "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/client/PostServiceClient.java"
click node_commentdb "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/repository/CommentRepository.java"
click node_commentmodel "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/model/Comment.java"
click node_commentdto "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/dto/CommentRequest.java"
click node_commentfilter "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/security/JwtAuthFilter.java"
click node_commentjwt "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/service/JwtService.java"
click node_postnotfound "https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/service/PostNotFoundException.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_auth,node_userdb,node_userdetails,node_userinfo,node_authdto,node_client toneBlue
class node_postapi,node_postdb,node_postmodel toneAmber
class node_commentapi,node_commentservice,node_postclient,node_commentdb,node_commentmodel,node_commentdto,node_postnotfound toneMint
class node_jwtissuer,node_userfilter,node_userconfig,node_commentfilter,node_commentjwt toneRose
```

## Components

### User and Auth

- [Authentication API](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/controller/AuthController.java): `user-service/src/main/java/com/miniblog/user_service/controller/AuthController.java`
- [User Records](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/repository/UserRepository.java): `user-service/src/main/java/com/miniblog/user_service/repository/UserRepository.java`
- [User Details Lookup](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/service/CustomUserDetailsService.java): `user-service/src/main/java/com/miniblog/user_service/service/CustomUserDetailsService.java`
- [User Entity](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/model/User.java): `user-service/src/main/java/com/miniblog/user_service/model/User.java`
- [Auth DTOs](https://github.com/imethmakariyawasam/miniblog-micro/tree/main/user-service/src/main/java/com/miniblog/user_service/dto): `user-service/src/main/java/com/miniblog/user_service/dto`

### Post Management

- [Posts API](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/post-service/src/main/java/com/miniblog/post_service/controller/PostController.java): `post-service/src/main/java/com/miniblog/post_service/controller/PostController.java`
- [Post Records](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/post-service/src/main/java/com/miniblog/post_service/repository/PostRepository.java): `post-service/src/main/java/com/miniblog/post_service/repository/PostRepository.java`
- [Post Entity](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/post-service/src/main/java/com/miniblog/post_service/model/Post.java): `post-service/src/main/java/com/miniblog/post_service/model/Post.java`

### Comment Management

- [Comments API](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/controller/CommentController.java): `comment-service/src/main/java/com/miniblog/comment_service/controller/CommentController.java`
- [Comment Workflow](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/service/CommentService.java): `comment-service/src/main/java/com/miniblog/comment_service/service/CommentService.java`
- [Post Existence Client](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/client/PostServiceClient.java): `comment-service/src/main/java/com/miniblog/comment_service/client/PostServiceClient.java`
- [Comment Records](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/repository/CommentRepository.java): `comment-service/src/main/java/com/miniblog/comment_service/repository/CommentRepository.java`
- [Comment Entity](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/model/Comment.java): `comment-service/src/main/java/com/miniblog/comment_service/model/Comment.java`
- [Comment Request](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/dto/CommentRequest.java): `comment-service/src/main/java/com/miniblog/comment_service/dto/CommentRequest.java`
- [Missing Post Error](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/service/PostNotFoundException.java): `comment-service/src/main/java/com/miniblog/comment_service/service/PostNotFoundException.java`

### Token Security

- [JWT Issuer](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/service/JwtService.java): `user-service/src/main/java/com/miniblog/user_service/service/JwtService.java`
- [User JWT Filter](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/security/JwtAuthFilter.java): `user-service/src/main/java/com/miniblog/user_service/security/JwtAuthFilter.java`
- [User Security Config](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/user-service/src/main/java/com/miniblog/user_service/security/SecurityConfig.java): `user-service/src/main/java/com/miniblog/user_service/security/SecurityConfig.java`
- [Comment JWT Filter](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/security/JwtAuthFilter.java): `comment-service/src/main/java/com/miniblog/comment_service/security/JwtAuthFilter.java`
- [Comment Token Validator](https://github.com/imethmakariyawasam/miniblog-micro/blob/main/comment-service/src/main/java/com/miniblog/comment_service/service/JwtService.java): `comment-service/src/main/java/com/miniblog/comment_service/service/JwtService.java`

### Other components

- **API Client**

## Connections

- API Client → Authentication API: registers or logs in (evidence: `user-service/src/main/java/com/miniblog/user_service/controller/AuthController.java`)
- Authentication API → User Records: reads and saves (evidence: `user-service/src/main/java/com/miniblog/user_service/controller/AuthController.java`)
- Authentication API → User Entity: creates user (evidence: `user-service/src/main/java/com/miniblog/user_service/controller/AuthController.java`)
- Authentication API → JWT Issuer: issues token (evidence: `user-service/src/main/java/com/miniblog/user_service/controller/AuthController.java`)
- Authentication API → Auth DTOs: uses request and response (evidence: `user-service/src/main/java/com/miniblog/user_service/controller/AuthController.java`)
- User Details Lookup → User Records: loads account (evidence: `user-service/src/main/java/com/miniblog/user_service/service/CustomUserDetailsService.java`)
- User Details Lookup → User Entity: returns account (evidence: `user-service/src/main/java/com/miniblog/user_service/service/CustomUserDetailsService.java`)
- User JWT Filter → JWT Issuer: validates token (evidence: `user-service/src/main/java/com/miniblog/user_service/security/JwtAuthFilter.java`)
- User JWT Filter → User Details Lookup: loads identity (evidence: `user-service/src/main/java/com/miniblog/user_service/security/JwtAuthFilter.java`)
- API Client → Posts API: manages posts (evidence: `post-service/src/main/java/com/miniblog/post_service/controller/PostController.java`)
- Posts API → Post Records: reads and writes (evidence: `post-service/src/main/java/com/miniblog/post_service/controller/PostController.java`)
- Post Records → Post Entity: persists (evidence: `post-service/src/main/java/com/miniblog/post_service/repository/PostRepository.java`)
- API Client → Comments API: requests comments (evidence: `comment-service/src/main/java/com/miniblog/comment_service/controller/CommentController.java`)
- Comments API → Comment Workflow: delegates (evidence: `comment-service/src/main/java/com/miniblog/comment_service/controller/CommentController.java`)
- Comments API → Comment Request: accepts request (evidence: `comment-service/src/main/java/com/miniblog/comment_service/controller/CommentController.java`)
- Comment Workflow → Post Existence Client: checks post (evidence: `comment-service/src/main/java/com/miniblog/comment_service/service/CommentService.java`)
- Post Existence Client → Posts API: queries existence
- Comment Workflow → Comment Records: reads and saves (evidence: `comment-service/src/main/java/com/miniblog/comment_service/service/CommentService.java`)
- Comment Workflow → Comment Entity: constructs comment (evidence: `comment-service/src/main/java/com/miniblog/comment_service/service/CommentService.java`)
- Comment Records → Comment Entity: persists (evidence: `comment-service/src/main/java/com/miniblog/comment_service/repository/CommentRepository.java`)
- Comment JWT Filter → Comment Token Validator: validates token (evidence: `comment-service/src/main/java/com/miniblog/comment_service/security/JwtAuthFilter.java`)
- Comment Workflow → Missing Post Error: raises when absent (evidence: `comment-service/src/main/java/com/miniblog/comment_service/service/CommentService.java`)
