# chinnappasrinivas/java-petstore-learning architecture

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

- Interactive diagram: https://gitdiagram.com/chinnappasrinivas/java-petstore-learning
- Repository: https://github.com/chinnappasrinivas/java-petstore-learning

## Overview

This is a generated Spring Boot Petstore API server stub. The main user workflow is an HTTP client reaching the Pet, Store, or User API; the README cautions that the stub is not expected to provide complete behavior. The tree also shows OpenAPI documentation support and domain models. Controller internals and their wiring to models were not sampled, so those relationships are omitted.

Main entry points: [`src/main/java/org/openapitools/OpenApiGeneratorApplication.java`](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/org/openapitools/OpenApiGeneratorApplication.java) (Spring Boot app), [`src/main/java/org/openapitools/configuration/HomeController.java`](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/org/openapitools/configuration/HomeController.java) (Home redirect), [`src/main/java/com/examples/petstore/api/PetApiController.java`](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/PetApiController.java) (Pet controller), [`src/main/java/com/examples/petstore/api/StoreApiController.java`](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/StoreApiController.java) (Store controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Spring Runtime"]
  node_app["Spring Boot app"]
  node_home["Home redirect"]
  node_springdoc["OpenAPI metadata"]
  node_openapi["OpenAPI definition<br/>[openapi.yaml]"]
end

subgraph group_apis["Petstore APIs"]
  node_petapi["Pet API<br/>[PetApi.java]"]
  node_petcontroller["Pet controller"]
  node_storeapi["Store API<br/>[StoreApi.java]"]
  node_storecontroller["Store controller"]
  node_userapi["User API<br/>[UserApi.java]"]
  node_usercontroller["User controller"]
end

subgraph group_models["Domain Models"]
  node_models["Petstore models"]
end

node_client(("HTTP client"))
node_swaggerui["Swagger UI"]

node_app -->|"component scans"| node_petcontroller
node_app -->|"component scans"| node_storecontroller
node_app -->|"component scans"| node_usercontroller
node_client -->|"HTTP requests"| node_petcontroller
node_client -->|"HTTP requests"| node_storecontroller
node_client -->|"HTTP requests"| node_usercontroller
node_client -->|"opens root"| node_home
node_home -->|"redirects to"| node_swaggerui

click node_app "https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/org/openapitools/OpenApiGeneratorApplication.java"
click node_home "https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/org/openapitools/configuration/HomeController.java"
click node_springdoc "https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/org/openapitools/configuration/SpringDocConfiguration.java"
click node_petapi "https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/PetApi.java"
click node_petcontroller "https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/PetApiController.java"
click node_storeapi "https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/StoreApi.java"
click node_storecontroller "https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/StoreApiController.java"
click node_userapi "https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/UserApi.java"
click node_usercontroller "https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/UserApiController.java"
click node_models "https://github.com/chinnappasrinivas/java-petstore-learning/tree/main/src/main/java/com/examples/petstore/model"
click node_openapi "https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/resources/openapi.yaml"

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_app,node_home,node_springdoc,node_openapi,node_client,node_swaggerui toneBlue
class node_petapi,node_petcontroller,node_storeapi,node_storecontroller,node_userapi,node_usercontroller toneAmber
class node_models toneMint
```

## Components

### Spring Runtime

- [Spring Boot app](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/org/openapitools/OpenApiGeneratorApplication.java): `src/main/java/org/openapitools/OpenApiGeneratorApplication.java`
- [Home redirect](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/org/openapitools/configuration/HomeController.java): `src/main/java/org/openapitools/configuration/HomeController.java`
- [OpenAPI metadata](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/org/openapitools/configuration/SpringDocConfiguration.java): `src/main/java/org/openapitools/configuration/SpringDocConfiguration.java`
- [OpenAPI definition](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/resources/openapi.yaml): `src/main/resources/openapi.yaml`

### Petstore APIs

- [Pet API](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/PetApi.java): `src/main/java/com/examples/petstore/api/PetApi.java`
- [Pet controller](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/PetApiController.java): `src/main/java/com/examples/petstore/api/PetApiController.java`
- [Store API](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/StoreApi.java): `src/main/java/com/examples/petstore/api/StoreApi.java`
- [Store controller](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/StoreApiController.java): `src/main/java/com/examples/petstore/api/StoreApiController.java`
- [User API](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/UserApi.java): `src/main/java/com/examples/petstore/api/UserApi.java`
- [User controller](https://github.com/chinnappasrinivas/java-petstore-learning/blob/main/src/main/java/com/examples/petstore/api/UserApiController.java): `src/main/java/com/examples/petstore/api/UserApiController.java`

### Domain Models

- [Petstore models](https://github.com/chinnappasrinivas/java-petstore-learning/tree/main/src/main/java/com/examples/petstore/model): `src/main/java/com/examples/petstore/model`

### Other components

- **HTTP client**
- **Swagger UI**

## Connections

- Spring Boot app → Pet controller: component scans
- Spring Boot app → Store controller: component scans
- Spring Boot app → User controller: component scans
- HTTP client → Pet controller: HTTP requests
- HTTP client → Store controller: HTTP requests
- HTTP client → User controller: HTTP requests
- HTTP client → Home redirect: opens root
- Home redirect → Swagger UI: redirects to
