# paudel-milan/esignature-platform_microservices architecture

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

- Interactive diagram: https://gitdiagram.com/paudel-milan/esignature-platform_microservices
- Repository: https://github.com/paudel-milan/esignature-platform_microservices

## Overview

This repository implements a document e-signature platform split across authentication, document storage, and signing services. The main workflow is: users register or log in, upload and retrieve documents, invite signers, then sign through an emailed link; signing produces an updated PDF and document status. The sampled source supports the service-level calls and event publication shown here. The README is empty, and unsampled listener and controller wiring is left out where it cannot be verified.

Main entry points: [`signing-service/src/main/java/com/esignature/signing_service/signing/service/SigningService.java`](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/signing/service/SigningService.java) (Signing service), [`document-service/src/main/java/com/esignature/document_service/document/controller/DocumentController.java`](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/document/controller/DocumentController.java) (Document API), [`auth-service/src/main/java/com/esignature/auth_service/auth/service/AuthService.java`](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/auth-service/src/main/java/com/esignature/auth_service/auth/service/AuthService.java) (Auth service), [`document-service/src/main/java/com/esignature/document_service/document/service/DocumentService.java`](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/document/service/DocumentService.java) (Document service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_auth["Authentication"]
  node_auth_api["Auth API"]
  node_auth_service["Auth service<br/>[AuthService.java]"]
  node_jwt_auth["JWT service<br/>[JwtService.java]"]
  node_user_repo["User repository"]
  node_user_db[("User store")]
end

subgraph group_docs["Documents"]
  node_document_api["Document API"]
  node_document_service["Document service"]
  node_document_repo["Document repository"]
  node_document_db[("Document store")]
  node_storage_service["Object storage service"]
  node_minio[("MinIO")]
  node_document_listener["Document event listener"]
end

subgraph group_signing["Signing"]
  node_sign_api["Signing API"]
  node_sign_service["Signing service"]
  node_sign_repo["Sign request repository"]
  node_pdf_signer["PDF signer"]
  node_document_client["Document client"]
end

subgraph group_shared["Shared infrastructure"]
  node_audit_service["Audit service<br/>[AuditService.java]"]
  node_audit_repo["Audit repository"]
  node_email_service["Email service<br/>[EmailService.java]"]
  node_mail["Mail provider"]
  node_kafka["Kafka"]
end

node_user(("User"))

node_user -->|"registers or logs in"| node_auth_api
node_auth_api -->|"handles request"| node_auth_service
node_auth_service -->|"reads and saves"| node_user_repo
node_user_repo -->|"persists users"| node_user_db
node_auth_service -->|"generates token"| node_jwt_auth
node_user -->|"uploads or retrieves"| node_document_api
node_document_api -->|"uploads or lists"| node_document_service
node_document_api -->|"looks up document"| node_document_repo
node_document_api -->|"downloads or uploads signed file"| node_storage_service
node_document_service -->|"uploads file"| node_storage_service
node_document_service -->|"saves or lists"| node_document_repo
node_storage_service -->|"reads and writes objects"| node_minio
node_sign_api -->|"handles signing request"| node_sign_service
node_sign_service -->|"saves and finds requests"| node_sign_repo
node_sign_service -->|"fetches document"| node_document_client
node_sign_service -->|"sends signing invite"| node_email_service
node_email_service -->|"sends email"| node_mail
node_sign_service -->|"signs PDF"| node_pdf_signer
node_pdf_signer -->|"downloads and uploads PDF"| node_document_client
node_sign_service -->|"publishes status event"| node_kafka
node_sign_service -->|"records signature"| node_audit_service
node_audit_service -->|"saves audit log"| node_audit_repo
node_kafka -.->|"dispatches update"| node_document_listener

click node_auth_api "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/auth-service/src/main/java/com/esignature/auth_service/auth/controller/AuthController.java"
click node_auth_service "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/auth-service/src/main/java/com/esignature/auth_service/auth/service/AuthService.java"
click node_jwt_auth "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/auth-service/src/main/java/com/esignature/auth_service/auth/service/JwtService.java"
click node_user_repo "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/auth-service/src/main/java/com/esignature/auth_service/user/repository/UserRepository.java"
click node_document_api "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/document/controller/DocumentController.java"
click node_document_service "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/document/service/DocumentService.java"
click node_document_repo "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/document/repository/DocumentRepository.java"
click node_storage_service "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/storage/StorageService.java"
click node_sign_api "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/signing/controller/SigningController.java"
click node_sign_service "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/signing/service/SigningService.java"
click node_sign_repo "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/signing/repository/SignRequestRepository.java"
click node_pdf_signer "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/signing/service/PdfSigningService.java"
click node_document_client "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/signing/client/DocumentClient.java"
click node_audit_service "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/common/service/AuditService.java"
click node_audit_repo "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/common/repository/AuditLogRepository.java"
click node_email_service "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/common/service/EmailService.java"
click node_document_listener "https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/document/service/DocumentEventListener.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_api,node_auth_service,node_jwt_auth,node_user_repo,node_user_db,node_user toneBlue
class node_document_api,node_document_service,node_document_repo,node_document_db,node_storage_service,node_minio,node_document_listener toneAmber
class node_sign_api,node_sign_service,node_sign_repo,node_pdf_signer,node_document_client toneMint
class node_audit_service,node_audit_repo,node_email_service,node_mail,node_kafka toneRose
```

## Components

### Authentication

- [Auth API](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/auth-service/src/main/java/com/esignature/auth_service/auth/controller/AuthController.java): `auth-service/src/main/java/com/esignature/auth_service/auth/controller/AuthController.java`
- [Auth service](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/auth-service/src/main/java/com/esignature/auth_service/auth/service/AuthService.java): `auth-service/src/main/java/com/esignature/auth_service/auth/service/AuthService.java`
- [JWT service](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/auth-service/src/main/java/com/esignature/auth_service/auth/service/JwtService.java): `auth-service/src/main/java/com/esignature/auth_service/auth/service/JwtService.java`
- [User repository](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/auth-service/src/main/java/com/esignature/auth_service/user/repository/UserRepository.java): `auth-service/src/main/java/com/esignature/auth_service/user/repository/UserRepository.java`
- **User store**

### Documents

- [Document API](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/document/controller/DocumentController.java): `document-service/src/main/java/com/esignature/document_service/document/controller/DocumentController.java`
- [Document service](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/document/service/DocumentService.java): `document-service/src/main/java/com/esignature/document_service/document/service/DocumentService.java`
- [Document repository](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/document/repository/DocumentRepository.java): `document-service/src/main/java/com/esignature/document_service/document/repository/DocumentRepository.java`
- **Document store**
- [Object storage service](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/storage/StorageService.java): `document-service/src/main/java/com/esignature/document_service/storage/StorageService.java`
- **MinIO**
- [Document event listener](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/document-service/src/main/java/com/esignature/document_service/document/service/DocumentEventListener.java): `document-service/src/main/java/com/esignature/document_service/document/service/DocumentEventListener.java`

### Signing

- [Signing API](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/signing/controller/SigningController.java): `signing-service/src/main/java/com/esignature/signing_service/signing/controller/SigningController.java`
- [Signing service](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/signing/service/SigningService.java): `signing-service/src/main/java/com/esignature/signing_service/signing/service/SigningService.java`
- [Sign request repository](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/signing/repository/SignRequestRepository.java): `signing-service/src/main/java/com/esignature/signing_service/signing/repository/SignRequestRepository.java`
- [PDF signer](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/signing/service/PdfSigningService.java): `signing-service/src/main/java/com/esignature/signing_service/signing/service/PdfSigningService.java`
- [Document client](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/signing/client/DocumentClient.java): `signing-service/src/main/java/com/esignature/signing_service/signing/client/DocumentClient.java`

### Shared infrastructure

- [Audit service](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/common/service/AuditService.java): `signing-service/src/main/java/com/esignature/signing_service/common/service/AuditService.java`
- [Audit repository](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/common/repository/AuditLogRepository.java): `signing-service/src/main/java/com/esignature/signing_service/common/repository/AuditLogRepository.java`
- [Email service](https://github.com/paudel-milan/esignature-platform_microservices/blob/main/signing-service/src/main/java/com/esignature/signing_service/common/service/EmailService.java): `signing-service/src/main/java/com/esignature/signing_service/common/service/EmailService.java`
- **Mail provider**
- **Kafka**

### Other components

- **User**

## Connections

- User → Auth API: registers or logs in
- Auth API → Auth service: handles request
- Auth service → User repository: reads and saves
- User repository → User store: persists users
- Auth service → JWT service: generates token
- User → Document API: uploads or retrieves
- Document API → Document service: uploads or lists
- Document API → Document repository: looks up document
- Document API → Object storage service: downloads or uploads signed file
- Document service → Object storage service: uploads file
- Document service → Document repository: saves or lists
- Object storage service → MinIO: reads and writes objects
- Signing API → Signing service: handles signing request
- Signing service → Sign request repository: saves and finds requests
- Signing service → Document client: fetches document
- Signing service → Email service: sends signing invite
- Email service → Mail provider: sends email
- Signing service → PDF signer: signs PDF
- PDF signer → Document client: downloads and uploads PDF
- Signing service → Kafka: publishes status event
- Signing service → Audit service: records signature
- Audit service → Audit repository: saves audit log
- Kafka → Document event listener: dispatches update
