Source: https://seerepo.com/r/apache/answer/built
Markdown source: https://seerepo.com/r/apache/answer/built.md
Description: answer is a Go repo built with Gin, Vite, React, and react-router-dom. It stores its data in MySQL, Postgres, and SQLite.

# What is answer built with?

answer is a Go repo built with Gin, Vite, React, and react-router-dom. It stores its data in MySQL, Postgres, and SQLite, reaches it with xorm.io/xorm and xorm.io/builder, uses AI through go-openai, mcp-go, and OpenAI, makes its content with github.com/microcosm-cc/bluemonday, github.com/disintegration/imaging, github.com/yuin/goldmark, golang.org/x/image, marked, and 2 more, validates its data with github.com/asaskevich/govalidator and github.com/go-playground/validator/v10, is tested with github.com/stretchr/testify, Uber, and Ory, and uses pq and MCP. It has 138,281 written lines, with 58 test files.

Read on November 7, 2026, at commit 6744295.

Repository: https://github.com/apache/answer

## Backend (/)

### The base

- **[Gin](https://seerepo.com/uses/gin)**: 78 files

### Data

- **[pq](https://seerepo.com/uses/pq)**
- **[MySQL](https://seerepo.com/uses/mysql)**: 3 files · [internal/base/data/data.go, line 28](https://github.com/apache/answer/blob/6744295fa888e0621fc9f9a8ace04f1a4daf8554/internal/base/data/data.go#L28)
- **[Postgres](https://seerepo.com/uses/postgres)**: 3 files · [internal/base/data/data.go, line 29](https://github.com/apache/answer/blob/6744295fa888e0621fc9f9a8ace04f1a4daf8554/internal/base/data/data.go#L29)
- **[SQLite](https://seerepo.com/uses/sqlite)**: 3 files · [internal/base/data/data.go, line 33](https://github.com/apache/answer/blob/6744295fa888e0621fc9f9a8ace04f1a4daf8554/internal/base/data/data.go#L33)

### Data access

- **xorm.io/xorm**: 69 files
- **xorm.io/builder**: 24 files

### AI

- **go-openai**
- **mcp-go**

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 4 files · [internal/controller/ai_controller.go, line 47](https://github.com/apache/answer/blob/6744295fa888e0621fc9f9a8ace04f1a4daf8554/internal/controller/ai_controller.go#L47)
- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [plugin/vector_search.go, line 27](https://github.com/apache/answer/blob/6744295fa888e0621fc9f9a8ace04f1a4daf8554/plugin/vector_search.go#L27)

## Support (/)

### Content

- **[github.com/microcosm-cc/bluemonday](https://seerepo.com/uses/githubcom-microcosm-cc-bluemonday)**: 2 files
- **github.com/disintegration/imaging**: 1 file
- **[github.com/yuin/goldmark](https://seerepo.com/uses/githubcom-yuin-goldmark)**: 1 file
- **[golang.org/x/image](https://seerepo.com/uses/golangorg-x-image)**: 1 file

### Validation

- **github.com/asaskevich/govalidator**: 1 file
- **[github.com/go-playground/validator/v10](https://seerepo.com/uses/githubcom-go-playground-validator-v10)**: 1 file

### Testing

- **github.com/stretchr/testify**: 31 files
- **Uber**: 4 files
- **Ory**: 2 files

### Tools

- **swag**
- **github.com/google/wire**: 11 files
- **github.com/spf13/cobra**: 1 file
- **github.com/swaggo/gin-swagger**: 1 file

### Other

- **github.com/jinzhu/copier**: 21 files
- **gopkg.in/yaml.v3**: 6 files
- **github.com/tidwall/gjson**: 4 files
- **golang.org/x/crypto**: 4 files
- **github.com/joho/godotenv**: 2 files
- **github.com/bwmarrin/snowflake**: 1 file
- **github.com/go-playground/locales**: 1 file
- **github.com/go-playground/universal-translator**: 1 file
- **github.com/go-resty/resty/v2**: 1 file
- **github.com/goccy/go-json**: 1 file
- **github.com/jinzhu/now**: 1 file
- **github.com/Masterminds/semver/v3**: 1 file
- **github.com/robfig/cron/v3**: 1 file
- **github.com/swaggo/files**: 1 file
- **golang.org/x/net**: 1 file
- **golang.org/x/term**: 1 file
- **golang.org/x/text**: 1 file
- **[Google](https://seerepo.com/uses/google)**: 1 file

## Frontend (ui)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in ui/package.json](https://github.com/apache/answer/blob/6744295fa888e0621fc9f9a8ace04f1a4daf8554/ui/package.json)
- **[React](https://seerepo.com/uses/react)**: 251 files · [in ui/package.json](https://github.com/apache/answer/blob/6744295fa888e0621fc9f9a8ace04f1a4daf8554/ui/package.json)
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 111 files

### Styles

- **[classnames](https://seerepo.com/uses/classnames)**: 55 files
- **[Bootstrap](https://seerepo.com/uses/bootstrap)**: 1 file

### Interface

- **react-bootstrap**: 184 files
- **[CodeMirror](https://seerepo.com/uses/codemirror)**: 6 files
- **[react-helmet-async](https://seerepo.com/uses/react-helmet-async)**: 5 files

## Support (ui)

### Content

- **[marked](https://seerepo.com/uses/marked)**: 3 files
- **front-matter**: 1 file
- **[qrcode](https://seerepo.com/uses/qrcode)**: 1 file

### Other

- **react-i18next**: 204 files
- **SWR**: 24 files
- **zustand**: 18 files
- **qs**: 15 files
- **Lodash**: 11 files
- **dayjs**: 9 files
- **i18next**: 4 files
- **copy-to-clipboard**: 3 files
- **color**: 2 files
- **uuid**: 2 files
- **Axios**: 1 file
- **diff**: 1 file
- **js-sha256**: 1 file
- **SemVer**: 1 file

## Other repos with a similar stack

- [infiniflow/ragflow](https://seerepo.com/r/infiniflow/ragflow/built): Gin, pq, MySQL, Postgres, MCP, OpenAI, React, github.com/yuin/goldmark, golang.org/x/image, classnames, qrcode · [Compare](https://seerepo.com/compare/apache/answer/vs/infiniflow/ragflow)
- [mudler/LocalAI](https://seerepo.com/r/mudler/LocalAI/built): Postgres, SQLite, MCP, OpenAI, Vite, React, react-router-dom, github.com/microcosm-cc/bluemonday, golang.org/x/image, CodeMirror, marked · [Compare](https://seerepo.com/compare/apache/answer/vs/mudler/LocalAI)
- [AlistGo/alist](https://seerepo.com/r/AlistGo/alist/built): Gin, MySQL, Postgres, SQLite, MCP, mcp-go, github.com/microcosm-cc/bluemonday, github.com/disintegration/imaging, github.com/yuin/goldmark, golang.org/x/image · [Compare](https://seerepo.com/compare/AlistGo/alist/vs/apache/answer)
- [Wei-Shaw/sub2api](https://seerepo.com/r/Wei-Shaw/sub2api/built): Gin, pq, Postgres, SQLite, MCP, Vite, golang.org/x/image, github.com/go-playground/validator/v10, marked, qrcode · [Compare](https://seerepo.com/compare/apache/answer/vs/Wei-Shaw/sub2api)
- [go-gitea/gitea](https://seerepo.com/r/go-gitea/gitea/built): pq, MySQL, Postgres, SQLite, Vite, github.com/microcosm-cc/bluemonday, github.com/yuin/goldmark, golang.org/x/image, CodeMirror · [Compare](https://seerepo.com/compare/apache/answer/vs/go-gitea/gitea)
- [datawhalechina/hello-agents](https://seerepo.com/r/datawhalechina/hello-agents/built): Postgres, SQLite, MCP, OpenAI, Vite, React, react-router-dom, marked · [Compare](https://seerepo.com/compare/apache/answer/vs/datawhalechina/hello-agents)

## Frequently asked questions

### What language is answer written in?

answer is written in Go, with 138,281 written lines.

### What framework does answer use?

answer is built with Gin, Vite, React, and react-router-dom.

### What database does answer use?

answer stores its data in MySQL, Postgres, and SQLite and reaches it with xorm.io/xorm and xorm.io/builder.

The proof: [internal/base/data/data.go, line 28](https://github.com/apache/answer/blob/6744295fa888e0621fc9f9a8ace04f1a4daf8554/internal/base/data/data.go#L28)

### Does answer use AI?

Yes. answer uses AI through go-openai, mcp-go, and OpenAI.

### What services does answer use?

answer uses pq and MCP.

### Does answer have tests?

Yes. answer has 58 test files and is tested with github.com/stretchr/testify, Uber, and Ory.

### Which repos have a stack like answer's?

The ones that share most of its stack: infiniflow/ragflow, mudler/LocalAI, and AlistGo/alist.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
