# cleinerfg/skyline-ground-api architecture

> Architecture diagram of the GitHub repository cleinerfg/skyline-ground-api, 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/cleinerfg/skyline-ground-api
- Repository: https://github.com/cleinerfg/skyline-ground-api

## Overview

Skyline Ground is a Spring Boot real-estate management API. The visible user workflow registers or authenticates an account, then uses authenticated requests to create projects; project creation validates input, resolves the creator, persists the project, and returns a response. The README also names construction, asset, finance, inventory, contract, and audit capabilities, but the supplied tree exposes no corresponding modules, so they are not expanded here. PostgreSQL is documented; unsampled module connections are omitted where evidence is unavailable.

Main entry points: [`src/main/java/com/skylineground/modules/project/service/CreateProjectService.java`](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/project/service/CreateProjectService.java) (Project Creation), [`src/main/java/com/skylineground/modules/identity/auth/web/AuthController.java`](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/auth/web/AuthController.java) (Auth Endpoints), [`src/main/java/com/skylineground/modules/identity/auth/service/LoginService.java`](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/auth/service/LoginService.java) (Login Service), [`src/main/java/com/skylineground/modules/project/web/ProjectController.java`](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/project/web/ProjectController.java) (Project Endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity &amp; Access"]
  node_auth_controller["Auth Endpoints"]
  node_create_user["User Registration"]
  node_login["Login Service<br/>[LoginService.java]"]
  node_user_repo["User Repository"]
  node_user_entity["User Account<br/>[User.java]"]
  node_token_service["JWT Service<br/>[TokenService.java]"]
  node_security_filter["JWT Filter"]
  node_security_context["Security Context"]
  node_token_payload["Token Claims<br/>[TokenPayload.java]"]
end

subgraph group_projects["Project Management"]
  node_project_controller["Project Endpoints"]
  node_create_project["Project Creation"]
  node_project_repo["Project Repository"]
  node_project_entity["Project Record<br/>[Project.java]"]
end

subgraph group_platform["Platform Services"]
  node_application["Spring Boot API"]
  node_error_handler["API Error Mapping"]
end

subgraph group_storage["Persistence"]
  node_postgres[("PostgreSQL")]
end

node_client(("API Client"))

node_client -->|"registers or logs in"| node_auth_controller
node_auth_controller -->|"registers user"| node_create_user
node_auth_controller -->|"authenticates"| node_login
node_create_user -->|"checks and saves"| node_user_repo
node_login -->|"issues token"| node_token_service
node_login -->|"uses authenticated user"| node_user_entity
node_token_service -->|"reads identity"| node_user_entity
node_security_filter -->|"validates token"| node_token_service
node_security_filter -->|"sets claims"| node_token_payload
node_security_context -->|"returns claims"| node_token_payload
node_client -->|"requests project"| node_project_controller
node_project_controller -->|"gets creator identity"| node_security_context
node_project_controller -->|"creates project"| node_create_project
node_create_project -->|"checks and saves"| node_project_repo
node_create_project -->|"resolves creator summary"| node_user_repo
node_create_project -->|"maps project data"| node_project_entity
node_user_repo -->|"persists accounts"| node_postgres
node_project_repo -->|"persists projects"| node_postgres

click node_application "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/SkylineGroundApplication.java"
click node_auth_controller "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/auth/web/AuthController.java"
click node_create_user "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/user/service/CreateUserService.java"
click node_login "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/auth/service/LoginService.java"
click node_user_repo "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/user/persistence/UserRepository.java"
click node_user_entity "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/user/persistence/User.java"
click node_token_service "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/core/security/jwt/TokenService.java"
click node_security_filter "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/core/security/config/SecurityFilter.java"
click node_security_context "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/core/security/SecurityContextService.java"
click node_token_payload "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/core/security/jwt/TokenPayload.java"
click node_project_controller "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/project/web/ProjectController.java"
click node_create_project "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/project/service/CreateProjectService.java"
click node_project_repo "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/project/persistence/ProjectRepository.java"
click node_project_entity "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/project/persistence/Project.java"
click node_error_handler "https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/core/exception/web/RestExceptionHandler.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_controller,node_create_user,node_login,node_user_repo,node_user_entity,node_token_service,node_security_filter,node_security_context,node_token_payload,node_client toneBlue
class node_project_controller,node_create_project,node_project_repo,node_project_entity toneAmber
class node_application,node_error_handler toneMint
class node_postgres toneRose
```

## Components

### Identity & Access

- [Auth Endpoints](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/auth/web/AuthController.java): `src/main/java/com/skylineground/modules/identity/auth/web/AuthController.java`
- [User Registration](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/user/service/CreateUserService.java): `src/main/java/com/skylineground/modules/identity/user/service/CreateUserService.java`
- [Login Service](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/auth/service/LoginService.java): `src/main/java/com/skylineground/modules/identity/auth/service/LoginService.java`
- [User Repository](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/user/persistence/UserRepository.java): `src/main/java/com/skylineground/modules/identity/user/persistence/UserRepository.java`
- [User Account](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/identity/user/persistence/User.java): `src/main/java/com/skylineground/modules/identity/user/persistence/User.java`
- [JWT Service](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/core/security/jwt/TokenService.java): `src/main/java/com/skylineground/core/security/jwt/TokenService.java`
- [JWT Filter](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/core/security/config/SecurityFilter.java): `src/main/java/com/skylineground/core/security/config/SecurityFilter.java`
- [Security Context](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/core/security/SecurityContextService.java): `src/main/java/com/skylineground/core/security/SecurityContextService.java`
- [Token Claims](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/core/security/jwt/TokenPayload.java): `src/main/java/com/skylineground/core/security/jwt/TokenPayload.java`

### Project Management

- [Project Endpoints](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/project/web/ProjectController.java): `src/main/java/com/skylineground/modules/project/web/ProjectController.java`
- [Project Creation](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/project/service/CreateProjectService.java): `src/main/java/com/skylineground/modules/project/service/CreateProjectService.java`
- [Project Repository](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/project/persistence/ProjectRepository.java): `src/main/java/com/skylineground/modules/project/persistence/ProjectRepository.java`
- [Project Record](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/modules/project/persistence/Project.java): `src/main/java/com/skylineground/modules/project/persistence/Project.java`

### Platform Services

- [Spring Boot API](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/SkylineGroundApplication.java): `src/main/java/com/skylineground/SkylineGroundApplication.java`
- [API Error Mapping](https://github.com/cleinerfg/skyline-ground-api/blob/main/src/main/java/com/skylineground/core/exception/web/RestExceptionHandler.java): `src/main/java/com/skylineground/core/exception/web/RestExceptionHandler.java`

### Persistence

- **PostgreSQL**

### Other components

- **API Client**

## Connections

- API Client → Auth Endpoints: registers or logs in (evidence: `src/main/java/com/skylineground/modules/identity/auth/web/AuthController.java`)
- Auth Endpoints → User Registration: registers user (evidence: `src/main/java/com/skylineground/modules/identity/auth/web/AuthController.java`)
- Auth Endpoints → Login Service: authenticates (evidence: `src/main/java/com/skylineground/modules/identity/auth/web/AuthController.java`)
- User Registration → User Repository: checks and saves (evidence: `src/main/java/com/skylineground/modules/identity/user/service/CreateUserService.java`)
- Login Service → JWT Service: issues token (evidence: `src/main/java/com/skylineground/modules/identity/auth/service/LoginService.java`)
- Login Service → User Account: uses authenticated user (evidence: `src/main/java/com/skylineground/modules/identity/auth/service/LoginService.java`)
- JWT Service → User Account: reads identity (evidence: `src/main/java/com/skylineground/core/security/jwt/TokenService.java`)
- JWT Filter → JWT Service: validates token (evidence: `src/main/java/com/skylineground/core/security/config/SecurityFilter.java`)
- JWT Filter → Token Claims: sets claims (evidence: `src/main/java/com/skylineground/core/security/config/SecurityFilter.java`)
- Security Context → Token Claims: returns claims (evidence: `src/main/java/com/skylineground/core/security/SecurityContextService.java`)
- API Client → Project Endpoints: requests project (evidence: `src/main/java/com/skylineground/modules/project/web/ProjectController.java`)
- Project Endpoints → Security Context: gets creator identity (evidence: `src/main/java/com/skylineground/modules/project/web/ProjectController.java`)
- Project Endpoints → Project Creation: creates project (evidence: `src/main/java/com/skylineground/modules/project/web/ProjectController.java`)
- Project Creation → Project Repository: checks and saves (evidence: `src/main/java/com/skylineground/modules/project/service/CreateProjectService.java`)
- Project Creation → User Repository: resolves creator summary (evidence: `src/main/java/com/skylineground/modules/project/service/CreateProjectService.java`)
- Project Creation → Project Record: maps project data (evidence: `src/main/java/com/skylineground/modules/project/service/CreateProjectService.java`)
- User Repository → PostgreSQL: persists accounts (evidence: `README.md`)
- Project Repository → PostgreSQL: persists projects (evidence: `README.md`)
