# ntkhang03/goat-bot-v2 architecture

> Architecture diagram of the GitHub repository ntkhang03/goat-bot-v2, 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/ntkhang03/goat-bot-v2
- Repository: https://github.com/ntkhang03/goat-bot-v2

## Overview

Goat Bot is a personal-account Facebook Messenger bot with a web dashboard. The main workflow is Messenger events entering the chat API, being dispatched and checked by the bot handlers, then invoking commands or event scripts that may respond through the API and persist user, thread, or global data. The dashboard provides authenticated account and thread-management routes over shared data. The README documents handler stages and bot capabilities; some runtime wiring and unsampled route details are represented only where supported by the tree or excerpts.

Main entry points: [`database/controller/index.js`](https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/index.js) (Database setup), [`fb-chat-api/index.js`](https://github.com/ntkhang03/goat-bot-v2/blob/main/fb-chat-api/index.js) (Facebook chat API), [`bot/handler/handlerEvents.js`](https://github.com/ntkhang03/goat-bot-v2/blob/main/bot/handler/handlerEvents.js) (Event handlers), [`database/controller/threadsData.js`](https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/threadsData.js) (Thread data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_messaging["Messenger runtime"]
  node_fbapi["Facebook chat API<br/>[index.js]"]
  node_login["Account login<br/>[login.js]"]
  node_action["Event action<br/>[handlerAction.js]"]
  node_dispatch["Event handlers<br/>[handlerEvents.js]"]
end

subgraph group_features["Bot features"]
  node_cmds["Commands"]
  node_eventcmds["Event scripts"]
  node_language["Localized text"]
end

subgraph group_persistence["Persistence"]
  node_checkdata["Data initialization"]
  node_dbcontroller["Database setup<br/>[index.js]"]
  node_threaddata["Thread data<br/>[threadsData.js]"]
  node_userdata["User data<br/>[usersData.js]"]
  node_globaldata["Global data<br/>[globalData.js]"]
  node_dashboarddata["Dashboard data<br/>[dashBoardData.js]"]
  node_mongo[("MongoDB<br/>[connectMongoDB.js]")]
  node_sqlite[("SQLite<br/>[connectSqlite.js]")]
end

subgraph group_dashboard["Web dashboard"]
  node_webapp["Dashboard server<br/>[app.js]"]
  node_middleware["Access checks<br/>[index.js]"]
  node_routes["Dashboard routes"]
end

node_messenger(("Messenger users"))
node_admin(("Dashboard users"))
node_facebook["Facebook"]

node_messenger -->|"send events"| node_fbapi
node_fbapi -->|"dispatches events"| node_action
node_action -->|"checks records"| node_checkdata
node_action -->|"processes event"| node_dispatch
node_dispatch -->|"executes commands"| node_cmds
node_dispatch -->|"executes handlers"| node_eventcmds
node_dispatch -->|"loads text"| node_language
node_cmds -->|"sends responses"| node_fbapi
node_eventcmds -->|"sends responses"| node_fbapi
node_checkdata -->|"creates threads"| node_threaddata
node_checkdata -->|"creates users"| node_userdata
node_dispatch -->|"updates analytics"| node_globaldata
node_dbcontroller -.->|"connects when selected"| node_mongo
node_dbcontroller -.->|"connects when selected"| node_sqlite
node_dbcontroller -->|"initializes access"| node_threaddata
node_dbcontroller -->|"initializes access"| node_userdata
node_dbcontroller -->|"initializes access"| node_globaldata
node_dbcontroller -->|"initializes access"| node_dashboarddata
node_admin -->|"uses dashboard"| node_webapp
node_webapp -->|"applies checks"| node_middleware
node_webapp -->|"mounts routes"| node_routes
node_middleware -->|"reads membership"| node_threaddata
node_routes -->|"uses account data"| node_dashboarddata
node_routes -->|"uses thread data"| node_threaddata
node_login -->|"establishes session"| node_fbapi
node_fbapi -->|"communicates with"| node_facebook

click node_fbapi "https://github.com/ntkhang03/goat-bot-v2/blob/main/fb-chat-api/index.js"
click node_login "https://github.com/ntkhang03/goat-bot-v2/blob/main/bot/login/login.js"
click node_action "https://github.com/ntkhang03/goat-bot-v2/blob/main/bot/handler/handlerAction.js"
click node_dispatch "https://github.com/ntkhang03/goat-bot-v2/blob/main/bot/handler/handlerEvents.js"
click node_cmds "https://github.com/ntkhang03/goat-bot-v2/tree/main/scripts/cmds"
click node_eventcmds "https://github.com/ntkhang03/goat-bot-v2/tree/main/scripts/events"
click node_language "https://github.com/ntkhang03/goat-bot-v2/tree/main/languages"
click node_checkdata "https://github.com/ntkhang03/goat-bot-v2/blob/main/bot/handler/handlerCheckData.js"
click node_dbcontroller "https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/index.js"
click node_threaddata "https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/threadsData.js"
click node_userdata "https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/usersData.js"
click node_globaldata "https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/globalData.js"
click node_dashboarddata "https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/dashBoardData.js"
click node_mongo "https://github.com/ntkhang03/goat-bot-v2/blob/main/database/connectDB/connectMongoDB.js"
click node_sqlite "https://github.com/ntkhang03/goat-bot-v2/blob/main/database/connectDB/connectSqlite.js"
click node_webapp "https://github.com/ntkhang03/goat-bot-v2/blob/main/dashboard/app.js"
click node_middleware "https://github.com/ntkhang03/goat-bot-v2/blob/main/dashboard/middleware/index.js"
click node_routes "https://github.com/ntkhang03/goat-bot-v2/tree/main/dashboard/routes"

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_fbapi,node_login,node_action,node_dispatch,node_messenger,node_admin toneBlue
class node_cmds,node_eventcmds,node_language toneAmber
class node_checkdata,node_dbcontroller,node_threaddata,node_userdata,node_globaldata,node_dashboarddata,node_mongo,node_sqlite toneMint
class node_webapp,node_middleware,node_routes toneRose
class node_facebook toneIndigo
```

## Components

### Messenger runtime

- [Facebook chat API](https://github.com/ntkhang03/goat-bot-v2/blob/main/fb-chat-api/index.js): `fb-chat-api/index.js`
- [Account login](https://github.com/ntkhang03/goat-bot-v2/blob/main/bot/login/login.js): `bot/login/login.js`
- [Event action](https://github.com/ntkhang03/goat-bot-v2/blob/main/bot/handler/handlerAction.js): `bot/handler/handlerAction.js`
- [Event handlers](https://github.com/ntkhang03/goat-bot-v2/blob/main/bot/handler/handlerEvents.js): `bot/handler/handlerEvents.js`

### Bot features

- [Commands](https://github.com/ntkhang03/goat-bot-v2/tree/main/scripts/cmds): `scripts/cmds`
- [Event scripts](https://github.com/ntkhang03/goat-bot-v2/tree/main/scripts/events): `scripts/events`
- [Localized text](https://github.com/ntkhang03/goat-bot-v2/tree/main/languages): `languages`

### Persistence

- [Data initialization](https://github.com/ntkhang03/goat-bot-v2/blob/main/bot/handler/handlerCheckData.js): `bot/handler/handlerCheckData.js`
- [Database setup](https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/index.js): `database/controller/index.js`
- [Thread data](https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/threadsData.js): `database/controller/threadsData.js`
- [User data](https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/usersData.js): `database/controller/usersData.js`
- [Global data](https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/globalData.js): `database/controller/globalData.js`
- [Dashboard data](https://github.com/ntkhang03/goat-bot-v2/blob/main/database/controller/dashBoardData.js): `database/controller/dashBoardData.js`
- [MongoDB](https://github.com/ntkhang03/goat-bot-v2/blob/main/database/connectDB/connectMongoDB.js): `database/connectDB/connectMongoDB.js`
- [SQLite](https://github.com/ntkhang03/goat-bot-v2/blob/main/database/connectDB/connectSqlite.js): `database/connectDB/connectSqlite.js`

### Web dashboard

- [Dashboard server](https://github.com/ntkhang03/goat-bot-v2/blob/main/dashboard/app.js): `dashboard/app.js`
- [Access checks](https://github.com/ntkhang03/goat-bot-v2/blob/main/dashboard/middleware/index.js): `dashboard/middleware/index.js`
- [Dashboard routes](https://github.com/ntkhang03/goat-bot-v2/tree/main/dashboard/routes): `dashboard/routes`

### Other components

- **Messenger users**
- **Dashboard users**
- **Facebook**

## Connections

- Messenger users → Facebook chat API: send events
- Facebook chat API → Event action: dispatches events
- Event action → Data initialization: checks records
- Event action → Event handlers: processes event
- Event handlers → Commands: executes commands
- Event handlers → Event scripts: executes handlers
- Event handlers → Localized text: loads text
- Commands → Facebook chat API: sends responses
- Event scripts → Facebook chat API: sends responses
- Data initialization → Thread data: creates threads
- Data initialization → User data: creates users
- Event handlers → Global data: updates analytics
- Database setup → MongoDB: connects when selected
- Database setup → SQLite: connects when selected
- Database setup → Thread data: initializes access
- Database setup → User data: initializes access
- Database setup → Global data: initializes access
- Database setup → Dashboard data: initializes access
- Dashboard users → Dashboard server: uses dashboard
- Dashboard server → Access checks: applies checks
- Dashboard server → Dashboard routes: mounts routes
- Access checks → Thread data: reads membership
- Dashboard routes → Dashboard data: uses account data
- Dashboard routes → Thread data: uses thread data
- Account login → Facebook chat API: establishes session
- Facebook chat API → Facebook: communicates with
