Web dashboard for TP-Link Easy Smart Switch management
  • TypeScript 92.5%
  • CSS 4.2%
  • Shell 2.1%
  • HTML 1.2%
Find a file
Jordan Carter 26891b1124
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
docs: add screenshot and update README
2026-03-26 03:21:12 +00:00
docs docs: add UI screenshot 2026-03-26 03:20:35 +00:00
src Add StatsChart component 2026-03-26 03:03:52 +00:00
.env.example Add .env.example 2026-03-26 03:03:36 +00:00
.gitignore Add .gitignore 2026-03-26 03:03:34 +00:00
.woodpecker.yaml ci: restructure pipeline to match netflow pattern 2026-03-26 03:17:02 +00:00
index.html Add index.html 2026-03-26 03:03:37 +00:00
package-lock.json Add package-lock.json 2026-03-26 03:03:39 +00:00
package.json Add package.json 2026-03-26 03:03:38 +00:00
README.md docs: add screenshot and update README 2026-03-26 03:21:12 +00:00
release.sh ci: port release.sh from netflow pattern 2026-03-26 03:18:00 +00:00
tsconfig.json fix: add vite/client types to resolve ImportMeta.env error 2026-03-26 03:10:14 +00:00
vite.config.ts Add Vite config 2026-03-26 03:03:41 +00:00

tplink-switch-ui

Web dashboard for TP-Link Easy Smart switch management. Consumes the tplink-switch-api REST API.

Switch Control UI

Features

  • Port grid — live link status for all 24 ports (amber = Gigabit, green = 100M, dim = down)
  • Port detail — per-port TX/RX packet stats, speed/flow-control config, enable/disable, cable test
  • VLAN management — list, create, delete 802.1Q VLANs with click-to-cycle port membership
  • PVID assignment — per-port PVID dropdowns
  • Traffic stats — bar charts (RX/TX/errors) + raw table
  • System controls — inline rename, LED toggle, reboot with confirmation
  • Auto-refresh — 10s polling toggle

Quick start

cp .env.example .env
# set VITE_API_BASE_URL if API is not on localhost:3003
npm install
npm run dev

Environment

Variable Default Description
VITE_API_BASE_URL `` (empty) API base URL — empty uses Vite proxy to localhost:3003

The Vite dev server proxies /api/* to http://localhost:3003 automatically. For production, set VITE_API_BASE_URL to the full API URL before building.

Build

npm run build   # outputs to dist/

CI

Woodpecker CI typechecks, builds, and publishes tplink-switch-ui-dist.tar.gz to Releases on every push to main.