# kgcorner/scaledge architecture

> Architecture diagram of the GitHub repository kgcorner/scaledge, 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/kgcorner/scaledge
- Repository: https://github.com/kgcorner/scaledge

## Overview

Scaledge is presented as a cloud-native image library, with separate gateway, content, user, authentication, data, configuration, and service-discovery applications. The strongest source-supported runtime workflow is authentication: a client requests login, validation, or token refresh through the auth resource; its service checks or updates user/login records and issues or verifies JWTs. The tree and README indicate image and user capabilities, but sampled source does not establish their API operations or how gateway routes connect the services. Those uncertain links are omitted.

Main entry points: [`scaledge-auth/src/main/java/com/kgcorner/scaledgeauth/service/AuthenticationService.java`](https://github.com/kgcorner/scaledge/blob/master/scaledge-auth/src/main/java/com/kgcorner/scaledgeauth/service/AuthenticationService.java) (Auth service), [`scaledge-auth/src/main/java/com/kgcorner/scaledgeauth/resource/AuthResource.java`](https://github.com/kgcorner/scaledge/blob/master/scaledge-auth/src/main/java/com/kgcorner/scaledgeauth/resource/AuthResource.java) (Auth endpoints), [`scaledge-data/src/main/java/com/kgcorner/scaledgedata/dao/ScaledgeRepository.java`](https://github.com/kgcorner/scaledge/blob/master/scaledge-data/src/main/java/com/kgcorner/scaledgedata/dao/ScaledgeRepository.java) (Repository API), [`scaledge-data/src/main/java/com/kgcorner/scaledgedata/dao/GenericRepository.java`](https://github.com/kgcorner/scaledge/blob/master/scaledge-data/src/main/java/com/kgcorner/scaledgedata/dao/GenericRepository.java) (Mongo repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Service entry"]
  node_gateway["Gateway app"]
end

subgraph group_domain["Image and users"]
  node_content["Content app"]
  node_images["Image models<br/>[ImagePreview.java]"]
  node_users["Users app"]
  node_user_model["User models<br/>[User.java]"]
end

subgraph group_identity["Authentication"]
  node_auth_resource["Auth endpoints<br/>[AuthResource.java]"]
  node_auth_service["Auth service"]
  node_jwt["JWT utility<br/>[JwtUtility.java]"]
  node_token_model["Token model<br/>[Token.java]"]
  node_login_model["Login model<br/>[Login.java]"]
end

subgraph group_platform["Data and platform"]
  node_repository["Repository API"]
  node_mongo_repo["Mongo repository"]
  node_config["Config server"]
  node_discovery["Eureka server"]
end

node_client(("API client"))
node_mongo[("MongoDB")]

node_client -->|"API requests"| node_gateway
node_client -->|"auth requests"| node_auth_resource
node_auth_resource -->|"dispatches"| node_auth_service
node_auth_service -->|"creates or verifies"| node_jwt
node_auth_service -->|"reads and updates"| node_repository
node_repository -->|"implemented by"| node_mongo_repo
node_mongo_repo -->|"queries and saves"| node_mongo
node_auth_service -->|"returns"| node_token_model
node_auth_service -->|"looks up"| node_login_model
node_auth_service -->|"loads and updates"| node_user_model

click node_gateway "https://github.com/kgcorner/scaledge/blob/master/scaledge-gateway/src/main/java/com/kgcorner/scaledge/ScaledgeApplication.java"
click node_content "https://github.com/kgcorner/scaledge/blob/master/scaledge-content/src/main/java/com/kgcorner/scaledgecontent/ScaledgeContentApplication.java"
click node_images "https://github.com/kgcorner/scaledge/blob/master/scaledge-models/src/main/java/com/kgcorner/models/ImagePreview.java"
click node_users "https://github.com/kgcorner/scaledge/blob/master/scaledge-users/src/main/java/com/kgcorner/scaledgeusers/ScaledgeUsersApplication.java"
click node_user_model "https://github.com/kgcorner/scaledge/blob/master/scaledge-models/src/main/java/com/kgcorner/models/User.java"
click node_auth_resource "https://github.com/kgcorner/scaledge/blob/master/scaledge-auth/src/main/java/com/kgcorner/scaledgeauth/resource/AuthResource.java"
click node_auth_service "https://github.com/kgcorner/scaledge/blob/master/scaledge-auth/src/main/java/com/kgcorner/scaledgeauth/service/AuthenticationService.java"
click node_jwt "https://github.com/kgcorner/scaledge/blob/master/scaledge-models/src/main/java/com/kgcorner/util/JwtUtility.java"
click node_token_model "https://github.com/kgcorner/scaledge/blob/master/scaledge-models/src/main/java/com/kgcorner/models/Token.java"
click node_login_model "https://github.com/kgcorner/scaledge/blob/master/scaledge-models/src/main/java/com/kgcorner/models/Login.java"
click node_repository "https://github.com/kgcorner/scaledge/blob/master/scaledge-data/src/main/java/com/kgcorner/scaledgedata/dao/ScaledgeRepository.java"
click node_mongo_repo "https://github.com/kgcorner/scaledge/blob/master/scaledge-data/src/main/java/com/kgcorner/scaledgedata/dao/GenericRepository.java"
click node_config "https://github.com/kgcorner/scaledge/blob/master/scaledge-config/src/main/java/com/kgcorner/scaledgeconfig/ScaledgeConfigApplication.java"
click node_discovery "https://github.com/kgcorner/scaledge/blob/master/scaledge-eureka/src/main/java/com/kgcorner/scaledgeeureka/ScaledgeEurekaApplication.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_gateway,node_client toneBlue
class node_content,node_images,node_users,node_user_model,node_mongo toneAmber
class node_auth_resource,node_auth_service,node_jwt,node_token_model,node_login_model toneMint
class node_repository,node_mongo_repo,node_config,node_discovery toneRose
```

## Components

### Service entry

- [Gateway app](https://github.com/kgcorner/scaledge/blob/master/scaledge-gateway/src/main/java/com/kgcorner/scaledge/ScaledgeApplication.java): `scaledge-gateway/src/main/java/com/kgcorner/scaledge/ScaledgeApplication.java`

### Image and users

- [Content app](https://github.com/kgcorner/scaledge/blob/master/scaledge-content/src/main/java/com/kgcorner/scaledgecontent/ScaledgeContentApplication.java): `scaledge-content/src/main/java/com/kgcorner/scaledgecontent/ScaledgeContentApplication.java`
- [Image models](https://github.com/kgcorner/scaledge/blob/master/scaledge-models/src/main/java/com/kgcorner/models/ImagePreview.java): `scaledge-models/src/main/java/com/kgcorner/models/ImagePreview.java`
- [Users app](https://github.com/kgcorner/scaledge/blob/master/scaledge-users/src/main/java/com/kgcorner/scaledgeusers/ScaledgeUsersApplication.java): `scaledge-users/src/main/java/com/kgcorner/scaledgeusers/ScaledgeUsersApplication.java`
- [User models](https://github.com/kgcorner/scaledge/blob/master/scaledge-models/src/main/java/com/kgcorner/models/User.java): `scaledge-models/src/main/java/com/kgcorner/models/User.java`

### Authentication

- [Auth endpoints](https://github.com/kgcorner/scaledge/blob/master/scaledge-auth/src/main/java/com/kgcorner/scaledgeauth/resource/AuthResource.java): `scaledge-auth/src/main/java/com/kgcorner/scaledgeauth/resource/AuthResource.java`
- [Auth service](https://github.com/kgcorner/scaledge/blob/master/scaledge-auth/src/main/java/com/kgcorner/scaledgeauth/service/AuthenticationService.java): `scaledge-auth/src/main/java/com/kgcorner/scaledgeauth/service/AuthenticationService.java`
- [JWT utility](https://github.com/kgcorner/scaledge/blob/master/scaledge-models/src/main/java/com/kgcorner/util/JwtUtility.java): `scaledge-models/src/main/java/com/kgcorner/util/JwtUtility.java`
- [Token model](https://github.com/kgcorner/scaledge/blob/master/scaledge-models/src/main/java/com/kgcorner/models/Token.java): `scaledge-models/src/main/java/com/kgcorner/models/Token.java`
- [Login model](https://github.com/kgcorner/scaledge/blob/master/scaledge-models/src/main/java/com/kgcorner/models/Login.java): `scaledge-models/src/main/java/com/kgcorner/models/Login.java`

### Data and platform

- [Repository API](https://github.com/kgcorner/scaledge/blob/master/scaledge-data/src/main/java/com/kgcorner/scaledgedata/dao/ScaledgeRepository.java): `scaledge-data/src/main/java/com/kgcorner/scaledgedata/dao/ScaledgeRepository.java`
- [Mongo repository](https://github.com/kgcorner/scaledge/blob/master/scaledge-data/src/main/java/com/kgcorner/scaledgedata/dao/GenericRepository.java): `scaledge-data/src/main/java/com/kgcorner/scaledgedata/dao/GenericRepository.java`
- [Config server](https://github.com/kgcorner/scaledge/blob/master/scaledge-config/src/main/java/com/kgcorner/scaledgeconfig/ScaledgeConfigApplication.java): `scaledge-config/src/main/java/com/kgcorner/scaledgeconfig/ScaledgeConfigApplication.java`
- [Eureka server](https://github.com/kgcorner/scaledge/blob/master/scaledge-eureka/src/main/java/com/kgcorner/scaledgeeureka/ScaledgeEurekaApplication.java): `scaledge-eureka/src/main/java/com/kgcorner/scaledgeeureka/ScaledgeEurekaApplication.java`

### Other components

- **API client**
- **MongoDB**

## Connections

- API client → Gateway app: API requests
- API client → Auth endpoints: auth requests
- Auth endpoints → Auth service: dispatches
- Auth service → JWT utility: creates or verifies
- Auth service → Repository API: reads and updates
- Repository API → Mongo repository: implemented by
- Mongo repository → MongoDB: queries and saves
- Auth service → Token model: returns
- Auth service → Login model: looks up
- Auth service → User models: loads and updates
