# kartiksood10/acme-migration-backend architecture

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

- Interactive diagram: https://gitdiagram.com/kartiksood10/acme-migration-backend
- Repository: https://github.com/kartiksood10/acme-migration-backend

## Overview

ACME is a Spring Boot control plane for asynchronous API-contract migrations: clients submit a migration request, the backend records its job and delegates execution to the Python worker, then the worker posts results back for persistence and client polling. It also exposes a historical-run dashboard summary and standardized error responses. The README documents these product-level flows, but no source excerpts were provided, so class-level call ownership cannot be verified; edges below reflect only documented relationships.

Main entry points: [`src/main/java/com/acme/migration/controller/MigrationController.java`](https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/controller/MigrationController.java) (Migration API), [`src/main/java/com/acme/migration/service/MigrationService.java`](https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/service/MigrationService.java) (Migration Coordination), [`src/main/java/com/acme/migration/service/MigrationWebhookService.java`](https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/service/MigrationWebhookService.java) (Webhook Handling), [`src/main/java/com/acme/migration/repository`](https://github.com/kartiksood10/acme-migration-backend/tree/master/src/main/java/com/acme/migration/repository) (Data Repositories)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Client API"]
  node_api["Migration API"]
  node_api_dtos["API Payloads"]
  node_errors["Error Responses"]
end

subgraph group_control["Migration Control"]
  node_migration["Migration Coordination"]
  node_webhook["Webhook Handling"]
end

subgraph group_persistence["Job Persistence"]
  node_jobs[("Migration Jobs<br/>[MigrationJobs.java]")]
  node_results[("Migration Results")]
  node_repositories["Data Repositories"]
end

subgraph group_integrations["External Systems"]
  node_postgres[("PostgreSQL")]
  node_worker["Python Worker"]
end

node_client(("API Client"))

node_client -->|"submits or polls"| node_api
node_api -->|"exchanges payloads"| node_api_dtos
node_api -->|"delegates migration"| node_migration
node_migration -->|"records job state"| node_jobs
node_migration -->|"forwards request"| node_worker
node_worker -->|"posts callback"| node_api
node_api -->|"receives callback"| node_webhook
node_webhook -->|"records results"| node_results
node_migration -->|"persists and queries"| node_repositories
node_webhook -->|"updates results"| node_repositories
node_repositories -->|"reads and writes"| node_postgres
node_api -->|"formats errors"| node_errors
node_api -->|"serves job status"| node_jobs
node_api -->|"serves migration details"| node_results

click node_api "https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/controller/MigrationController.java"
click node_api_dtos "https://github.com/kartiksood10/acme-migration-backend/tree/master/src/main/java/com/acme/migration/dto"
click node_errors "https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/exception/GlobalExceptionHandler.java"
click node_migration "https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/service/MigrationService.java"
click node_webhook "https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/service/MigrationWebhookService.java"
click node_jobs "https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/entity/MigrationJobs.java"
click node_results "https://github.com/kartiksood10/acme-migration-backend/tree/master/src/main/java/com/acme/migration/entity"
click node_repositories "https://github.com/kartiksood10/acme-migration-backend/tree/master/src/main/java/com/acme/migration/repository"

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_api,node_api_dtos,node_errors,node_client toneBlue
class node_migration,node_webhook toneAmber
class node_jobs,node_results,node_repositories toneMint
class node_postgres,node_worker toneRose
```

## Components

### Client API

- [Migration API](https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/controller/MigrationController.java): `src/main/java/com/acme/migration/controller/MigrationController.java`
- [API Payloads](https://github.com/kartiksood10/acme-migration-backend/tree/master/src/main/java/com/acme/migration/dto): `src/main/java/com/acme/migration/dto`
- [Error Responses](https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/exception/GlobalExceptionHandler.java): `src/main/java/com/acme/migration/exception/GlobalExceptionHandler.java`

### Migration Control

- [Migration Coordination](https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/service/MigrationService.java): `src/main/java/com/acme/migration/service/MigrationService.java`
- [Webhook Handling](https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/service/MigrationWebhookService.java): `src/main/java/com/acme/migration/service/MigrationWebhookService.java`

### Job Persistence

- [Migration Jobs](https://github.com/kartiksood10/acme-migration-backend/blob/master/src/main/java/com/acme/migration/entity/MigrationJobs.java): `src/main/java/com/acme/migration/entity/MigrationJobs.java`
- [Migration Results](https://github.com/kartiksood10/acme-migration-backend/tree/master/src/main/java/com/acme/migration/entity): `src/main/java/com/acme/migration/entity`
- [Data Repositories](https://github.com/kartiksood10/acme-migration-backend/tree/master/src/main/java/com/acme/migration/repository): `src/main/java/com/acme/migration/repository`

### External Systems

- **PostgreSQL**
- **Python Worker**

### Other components

- **API Client**

## Connections

- API Client → Migration API: submits or polls (evidence: `README.md`)
- Migration API → API Payloads: exchanges payloads (evidence: `README.md`)
- Migration API → Migration Coordination: delegates migration (evidence: `README.md`)
- Migration Coordination → Migration Jobs: records job state (evidence: `README.md`)
- Migration Coordination → Python Worker: forwards request (evidence: `README.md`)
- Python Worker → Migration API: posts callback (evidence: `README.md`)
- Migration API → Webhook Handling: receives callback (evidence: `README.md`)
- Webhook Handling → Migration Results: records results (evidence: `README.md`)
- Migration Coordination → Data Repositories: persists and queries (evidence: `README.md`)
- Webhook Handling → Data Repositories: updates results (evidence: `README.md`)
- Data Repositories → PostgreSQL: reads and writes (evidence: `README.md`)
- Migration API → Error Responses: formats errors (evidence: `README.md`)
- Migration API → Migration Jobs: serves job status (evidence: `README.md`)
- Migration API → Migration Results: serves migration details (evidence: `README.md`)
