# bagaswijaya97/geminiaiservices architecture

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

## Overview

GeminiAIServices is a small ASP.NET API that exposes separate text-only and text-plus-image prompt workflows backed by Google Gemini. A client submits a prompt (and, for the image route, a file); the controller builds the Gemini request, sends it to the corresponding external API, parses the response, and returns the result or an error. The image route also compresses oversized uploads and determines their MIME type. The README describes the project as a learning integration; implementation details beyond the sampled files are not inferred.

Main entry points: [`GeminiAIServices/Controllers/TextAndImageController.cs`](https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Controllers/TextAndImageController.cs) (Text + Image Endpoint), [`GeminiAIServices/Controllers/TextOnlyController.cs`](https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Controllers/TextOnlyController.cs) (Text Endpoint), [`GeminiAIServices/Program.cs`](https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Program.cs) (ASP.NET Host), [`GeminiAIServices/Models/clsRequest.cs`](https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Models/clsRequest.cs) (Gemini Request Models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_host["ASP.NET Host<br/>[Program.cs]"]
  node_text_endpoint["Text Endpoint"]
  node_image_endpoint["Text + Image Endpoint"]
end

subgraph group_request["Request Preparation"]
  node_request_models["Gemini Request Models<br/>[clsRequest.cs]"]
  node_upload_helpers["Upload Helpers<br/>[General.cs]"]
end

subgraph group_integration["Gemini Integration"]
  node_api_constants["API Constants<br/>[General.cs]"]
  node_gemini["Google Gemini API"]
end

node_client(("API Client"))

node_host -->|"dispatches routes"| node_text_endpoint
node_host -->|"dispatches routes"| node_image_endpoint
node_client -->|"submits prompt"| node_text_endpoint
node_client -->|"submits prompt and file"| node_image_endpoint
node_text_endpoint -->|"builds request"| node_request_models
node_image_endpoint -->|"builds request"| node_request_models
node_image_endpoint -->|"compresses and detects type"| node_upload_helpers
node_text_endpoint -->|"reads endpoint and key"| node_api_constants
node_image_endpoint -->|"reads endpoint and key"| node_api_constants
node_text_endpoint -->|"posts text request"| node_gemini
node_image_endpoint -->|"posts multimodal request"| node_gemini
node_gemini -->|"returns API response"| node_text_endpoint
node_gemini -->|"returns API response"| node_image_endpoint
node_text_endpoint -->|"returns result or error"| node_client
node_image_endpoint -->|"returns result or error"| node_client

click node_host "https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Program.cs"
click node_text_endpoint "https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Controllers/TextOnlyController.cs"
click node_image_endpoint "https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Controllers/TextAndImageController.cs"
click node_request_models "https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Models/clsRequest.cs"
click node_upload_helpers "https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Helpers/General.cs"
click node_api_constants "https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Helpers/General.cs"

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_host,node_text_endpoint,node_image_endpoint,node_client toneBlue
class node_request_models,node_upload_helpers toneAmber
class node_api_constants,node_gemini toneMint
```

## Components

### HTTP API

- [ASP.NET Host](https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Program.cs): `GeminiAIServices/Program.cs`
- [Text Endpoint](https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Controllers/TextOnlyController.cs): `GeminiAIServices/Controllers/TextOnlyController.cs`
- [Text + Image Endpoint](https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Controllers/TextAndImageController.cs): `GeminiAIServices/Controllers/TextAndImageController.cs`

### Request Preparation

- [Gemini Request Models](https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Models/clsRequest.cs): `GeminiAIServices/Models/clsRequest.cs`
- [Upload Helpers](https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Helpers/General.cs): `GeminiAIServices/Helpers/General.cs`

### Gemini Integration

- [API Constants](https://github.com/bagaswijaya97/geminiaiservices/blob/master/GeminiAIServices/Helpers/General.cs): `GeminiAIServices/Helpers/General.cs`
- **Google Gemini API**

### Other components

- **API Client**

## Connections

- ASP.NET Host → Text Endpoint: dispatches routes
- ASP.NET Host → Text + Image Endpoint: dispatches routes
- API Client → Text Endpoint: submits prompt
- API Client → Text + Image Endpoint: submits prompt and file
- Text Endpoint → Gemini Request Models: builds request
- Text + Image Endpoint → Gemini Request Models: builds request
- Text + Image Endpoint → Upload Helpers: compresses and detects type
- Text Endpoint → API Constants: reads endpoint and key
- Text + Image Endpoint → API Constants: reads endpoint and key
- Text Endpoint → Google Gemini API: posts text request
- Text + Image Endpoint → Google Gemini API: posts multimodal request
- Google Gemini API → Text Endpoint: returns API response
- Google Gemini API → Text + Image Endpoint: returns API response
- Text Endpoint → API Client: returns result or error
- Text + Image Endpoint → API Client: returns result or error
