3x-ui/docs
MHSanaei 99d971ff83 feat(ci): let a maintainer re-run the issue analyst with @claude analyze
The analyst ran only on a new issue or on the reporter's reply to a
"clarification needed" question, and a comment mentioning @claude was
explicitly skipped. A maintainer had no way to get a fresh analysis after
the code moved, after the prompt improved, or to point it at a lead; the
only option was re-running the old job, which replays the old commit and
the old prompt.

A comment starting `@claude analyze` from an OWNER, MEMBER or COLLABORATOR
on an issue (open or closed, never a PR) now runs it as
`maintainer_request`, mirroring `@claude review` on PRs. In that mode the
analyst re-checks its earlier analysis against the current checkout, treats
text after the command as a steer on what to investigate (never as a
change to its rules), posts a complete standalone analysis that says what
changed, does not tag the maintainer, and leaves the issue's open/closed
state alone. The reporter path is unchanged and still skips @claude
comments, so one comment never starts both.

No test reaches a workflow trigger; actionlint 1.7.7 passes on the file,
and the first `@claude analyze` after the push is the demonstration.
2026-10-12 16:42:02 +02:00
..
app chore(docs): bump dependencies and adapt to fumadocs-core 16.15.11 2026-09-15 16:00:05 +02:00
components fix(sub): carry REALITY ML-KEM hint in VLESS links (#6712) 2026-10-02 15:44:41 +02:00
content/docs fix(xray): keep balancer overrides across routing reloads (#6779) 2026-10-12 14:59:26 +02:00
lib fix(sub): carry REALITY ML-KEM hint in VLESS links (#6712) 2026-10-02 15:44:41 +02:00
public fix(xray): keep balancer overrides across routing reloads (#6779) 2026-10-12 14:59:26 +02:00
scripts docs: vendor the documentation site into the monorepo 2026-07-07 23:07:14 +02:00
.gitattributes docs: vendor the documentation site into the monorepo 2026-07-07 23:07:14 +02:00
.gitignore docs: vendor the documentation site into the monorepo 2026-07-07 23:07:14 +02:00
.oxfmtrc.json Move to TypeScript 7 and the oxc toolchain (oxlint + oxfmt) (#6262) 2026-08-19 15:36:27 +02:00
.oxlintrc.json Move to TypeScript 7 and the oxc toolchain (oxlint + oxfmt) (#6262) 2026-08-19 15:36:27 +02:00
architecture.md feat(ci): let a maintainer re-run the issue analyst with @claude analyze 2026-10-12 16:42:02 +02:00
CONTRIBUTING.md Move to TypeScript 7 and the oxc toolchain (oxlint + oxfmt) (#6262) 2026-08-19 15:36:27 +02:00
custom-subscription-templates.md Move to TypeScript 7 and the oxc toolchain (oxlint + oxfmt) (#6262) 2026-08-19 15:36:27 +02:00
LICENSE docs: vendor the documentation site into the monorepo 2026-07-07 23:07:14 +02:00
next.config.mjs docs: vendor the documentation site into the monorepo 2026-07-07 23:07:14 +02:00
package.json chore(deps): bump frontend and docs deps, clear npm audit findings 2026-10-06 12:09:38 +02:00
pnpm-lock.yaml chore(deps): bump frontend and docs deps, clear npm audit findings 2026-10-06 12:09:38 +02:00
pnpm-workspace.yaml chore(deps): bump frontend and docs deps, clear npm audit findings 2026-10-06 12:09:38 +02:00
postcss.config.mjs docs: vendor the documentation site into the monorepo 2026-07-07 23:07:14 +02:00
proxy.ts docs: vendor the documentation site into the monorepo 2026-07-07 23:07:14 +02:00
pwa-installability-verification.md feat(web): add network-only PWA installability (#6190) 2026-08-18 15:33:20 +02:00
README.md docs: add Discord bot to READMEs, architecture, operations guides, and locales (#6513) 2026-09-14 11:53:22 +02:00
real-client-ip.md Move to TypeScript 7 and the oxc toolchain (oxlint + oxfmt) (#6262) 2026-08-19 15:36:27 +02:00
source.config.ts docs: vendor the documentation site into the monorepo 2026-07-07 23:07:14 +02:00
tsconfig.json docs: vendor the documentation site into the monorepo 2026-07-07 23:07:14 +02:00
vercel.json docs: vendor the documentation site into the monorepo 2026-07-07 23:07:14 +02:00
vitest.config.ts docs: vendor the documentation site into the monorepo 2026-07-07 23:07:14 +02:00
xray-dns.md Add encrypted DNS presets (#5837) 2026-07-09 00:45:35 +02:00

3x-ui

3x-ui Documentation

The official documentation and product site for 3x-ui — an advanced web panel for managing Xray-core servers.

Live site CI License: GPL-3.0 Next.js 16 Fumadocs 16

Read the docs →


Overview

This directory (docs/ in the 3x-ui monorepo) contains the source for docs.sanaei.dev — a static-first documentation and marketing site built with Fumadocs on Next.js. It has no backend, no database, and no auth: every page is prerendered and every tool runs entirely in the browser.

What's inside

The documentation walks you through 3x-ui from first install to day-to-day operation:

  • Getting Started — installation, first login, and updating or uninstalling the panel.
  • Configuration — the panel, inbounds, REALITY, transports, clients, subscriptions, and share links.
  • Operations — reverse proxy, multi-node setups, outbounds & routing, backup/restore, Telegram and Discord bots, and security.
  • Reference — environment variables, the database, ports & firewall, and the HTTP API.
  • Help — troubleshooting, FAQ, migration, and how to contribute.

Interactive tools

The site ships with in-browser helpers that generate configuration for you — no data ever leaves your browser:

Tool What it does
REALITY Config Generator Build a valid REALITY inbound configuration.
Share Link Inspector Decode and inspect vless:// / vmess:// share links.
Install Command Builder Assemble the right install command for your setup.
Reverse Proxy Generator Generate reverse-proxy configs (Nginx / Caddy).
Protocol Wizard Pick and configure the right protocol for your needs.
Firewall Rules Generator Produce firewall rules for your ports.

Tech stack

Layer Technology
Framework Next.js 16 (App Router) · React 19
Docs Fumadocs (-ui / -core / -mdx)
Styling Tailwind CSS v4
Search Orama static index
Language TypeScript (strict)
Tests Vitest for the pure lib/xray logic
Tooling pnpm · oxlint · oxfmt

Quick start

This project uses pnpm (npm lockfiles are gitignored). Run everything from the docs/ directory:

cd docs
pnpm install
pnpm dev        # http://localhost:3000

Useful scripts:

Script Description
pnpm dev Start the dev server
pnpm build Production build (also typechecks)
pnpm typecheck Generate MDX/route types and tsc --noEmit
pnpm lint Run oxlint (.oxlintrc.json)
pnpm test Run unit tests (Vitest)

See CONTRIBUTING.md for the full list and project conventions.

Project structure

app/             # Next.js App Router — layouts, home, docs, OG images, search, llms.txt
components/      # React components — interactive tools, home sections, MDX bindings
content/docs/    # MDX documentation, one folder per locale (en · fa · ru · zh)
lib/             # source config, i18n, GitHub stats, and the unit-tested lib/xray logic
public/          # static assets — logos, favicon, openapi.json, CNAME
scripts/         # build-time scripts (API reference generation)
source.config.ts # Fumadocs MDX schema & collection config
next.config.mjs  # Next.js config (static-export gating)
proxy.ts         # i18n middleware

Internationalization

Documentation is authored in English. Persian (fa, RTL), Russian (ru), and Chinese (zh) locales are wired up; untranslated pages fall back to English so they never 404. English URLs are unprefixed; other locales live under /fa, /ru, /zh.

Deployment

The site builds for two targets:

  • Vercel / Node — pnpm build (static search index + prerendered OG images).
  • GitHub Pages (static export) — DEPLOY_TARGET=static pnpm build → out/.

Contributing

Contributions are welcome! Setup, scripts, and project conventions live in CONTRIBUTING.md.

License

Licensed under GPL-3.0.