# guritadarattt/guritagpt architecture

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

- Interactive diagram: https://gitdiagram.com/guritadarattt/guritagpt
- Repository: https://github.com/guritadarattt/guritagpt

## Overview

Gurita GPT is a web-based Indonesian GPT-J assistant. A chat user enters an API key, creates or opens a conversation, and sends a message; the server stores it, optionally searches DuckDuckGo, builds a persona-aware prompt, generates a reply, and stores the response. Separate admin flows manage API keys, inspect usage and conversations, edit the persona, and use owner chat; the app also exposes a health endpoint and serves a dashboard and API documentation. The runtime wiring is based on sampled server and module source; README capabilities without sampled frontend implementation are represented at their documented entry points.

Main entry points: [`server.js`](https://github.com/guritadarattt/guritagpt/blob/main/server.js) (HTTP API server), [`search.js`](https://github.com/guritadarattt/guritagpt/blob/main/search.js) (Prompt and search), [`persona.js`](https://github.com/guritadarattt/guritagpt/blob/main/persona.js) (Persona handling), [`db.js`](https://github.com/guritadarattt/guritagpt/blob/main/db.js) (SQLite state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_chatui["Conversation UI<br/>[chat.js]"]
  node_dashboard["Status dashboard<br/>[index.html]"]
  node_docs["API documentation<br/>[docs.html]"]
  node_adminui["Admin panel<br/>[admin.js]"]
end

subgraph group_api["API orchestration"]
  node_server["HTTP API server<br/>[server.js]"]
end

subgraph group_assistant["Assistant generation"]
  node_search["Prompt and search<br/>[search.js]"]
  node_title["Title generation<br/>[title.js]"]
  node_model["GPT-J generator<br/>[model.js]"]
end

subgraph group_state["Configuration and state"]
  node_persona["Persona handling<br/>[persona.js]"]
  node_persona_data["Persona settings<br/>[persona.json]"]
  node_training_data["Training examples<br/>[training_data.json]"]
  node_database[("SQLite state<br/>[db.js]")]
end

node_user(("Chat user"))
node_admin(("Admin"))
node_ddg["DuckDuckGo"]

node_user -->|"uses"| node_chatui
node_chatui -->|"calls chat API"| node_server
node_admin -->|"uses"| node_adminui
node_adminui -->|"calls admin API"| node_server
node_server -->|"serves page"| node_dashboard
node_server -->|"serves page"| node_docs
node_server -->|"validates and stores"| node_database
node_server -->|"builds prompts and searches"| node_search
node_server -->|"requests title"| node_title
node_server -->|"generates reply"| node_model
node_title -->|"generates title"| node_model
node_search -->|"loads persona"| node_persona
node_server -->|"loads or saves"| node_persona
node_persona -->|"reads and writes"| node_persona_data
node_server -->|"loads examples"| node_training_data
node_search -.->|"searches web"| node_ddg
node_server -->|"reads and writes conversations"| node_database
node_server -->|"logs usage and manages keys"| node_database

click node_chatui "https://github.com/guritadarattt/guritagpt/blob/main/public/js/chat.js"
click node_dashboard "https://github.com/guritadarattt/guritagpt/blob/main/public/index.html"
click node_docs "https://github.com/guritadarattt/guritagpt/blob/main/public/docs.html"
click node_adminui "https://github.com/guritadarattt/guritagpt/blob/main/public/js/admin.js"
click node_server "https://github.com/guritadarattt/guritagpt/blob/main/server.js"
click node_search "https://github.com/guritadarattt/guritagpt/blob/main/search.js"
click node_title "https://github.com/guritadarattt/guritagpt/blob/main/title.js"
click node_model "https://github.com/guritadarattt/guritagpt/blob/main/model.js"
click node_persona "https://github.com/guritadarattt/guritagpt/blob/main/persona.js"
click node_persona_data "https://github.com/guritadarattt/guritagpt/blob/main/data/persona.json"
click node_training_data "https://github.com/guritadarattt/guritagpt/blob/main/data/training_data.json"
click node_database "https://github.com/guritadarattt/guritagpt/blob/main/db.js"

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_chatui,node_dashboard,node_docs,node_adminui,node_user toneBlue
class node_server toneAmber
class node_search,node_title,node_model toneMint
class node_persona,node_persona_data,node_training_data,node_database toneRose
class node_admin,node_ddg toneIndigo
```

## Components

### Web experience

- [Conversation UI](https://github.com/guritadarattt/guritagpt/blob/main/public/js/chat.js): `public/js/chat.js`
- [Status dashboard](https://github.com/guritadarattt/guritagpt/blob/main/public/index.html): `public/index.html`
- [API documentation](https://github.com/guritadarattt/guritagpt/blob/main/public/docs.html): `public/docs.html`
- [Admin panel](https://github.com/guritadarattt/guritagpt/blob/main/public/js/admin.js): `public/js/admin.js`

### API orchestration

- [HTTP API server](https://github.com/guritadarattt/guritagpt/blob/main/server.js): `server.js`

### Assistant generation

- [Prompt and search](https://github.com/guritadarattt/guritagpt/blob/main/search.js): `search.js`
- [Title generation](https://github.com/guritadarattt/guritagpt/blob/main/title.js): `title.js`
- [GPT-J generator](https://github.com/guritadarattt/guritagpt/blob/main/model.js): `model.js`

### Configuration and state

- [Persona handling](https://github.com/guritadarattt/guritagpt/blob/main/persona.js): `persona.js`
- [Persona settings](https://github.com/guritadarattt/guritagpt/blob/main/data/persona.json): `data/persona.json`
- [Training examples](https://github.com/guritadarattt/guritagpt/blob/main/data/training_data.json): `data/training_data.json`
- [SQLite state](https://github.com/guritadarattt/guritagpt/blob/main/db.js): `db.js`

### Other components

- **Chat user**
- **Admin**
- **DuckDuckGo**

## Connections

- Chat user → Conversation UI: uses
- Conversation UI → HTTP API server: calls chat API
- Admin → Admin panel: uses
- Admin panel → HTTP API server: calls admin API
- HTTP API server → Status dashboard: serves page
- HTTP API server → API documentation: serves page
- HTTP API server → SQLite state: validates and stores
- HTTP API server → Prompt and search: builds prompts and searches
- HTTP API server → Title generation: requests title
- HTTP API server → GPT-J generator: generates reply
- Title generation → GPT-J generator: generates title
- Prompt and search → Persona handling: loads persona
- HTTP API server → Persona handling: loads or saves
- Persona handling → Persona settings: reads and writes
- HTTP API server → Training examples: loads examples
- Prompt and search → DuckDuckGo: searches web
- HTTP API server → SQLite state: reads and writes conversations
- HTTP API server → SQLite state: logs usage and manages keys
