Web admin console for VGate, built with Vue 3 + Vite + TypeScript. Operators use
it to manage proxy nodes, users, plans, orders, traffic, announcements, and system
config. It talks to the manager's REST API under /api/v1.
- Vue 3 (Composition API,
<script setup>) - Vite — dev server & build tool
- TypeScript
- Element Plus — UI components (auto-imported)
- Pinia — state management
- Vue Router — routing
- Axios — HTTP client
- Node.js 18+
- A package manager —
npmorpnpm(lockfiles for both are present)
# install dependencies
npm install # or: pnpm install
# start the dev server (http://localhost:5173)
npm run dev
# type-check without emitting (vue-tsc)
npm run typecheck
# production build → dist/
npm run build
# preview the production build locally
npm run previewIn development, Vite proxies /api to the manager backend at
http://localhost:8081 (see server.proxy in vite.config.ts), so the admin talks
to the backend without CORS issues during local development.
The API base URL is read at runtime from a global variable
(window.__ENV__.API_BASE_URL) injected by public/env.js. The file is copied
verbatim into dist/env.js on build and is not bundled, so you can edit the
backend address after deployment without rebuilding.
src/api/http.ts uses it as the axios baseURL, falling back to the relative path
/api/v1 when it is empty:
// dist/env.js — edit this file on the deployed server
window.__ENV__ = { API_BASE_URL: '' } // '' → relative /api/v1 (reverse-proxy / same-origin)
// window.__ENV__ = { API_BASE_URL: 'http://192.168.1.10:8081/api/v1' } // separate host:port- Leave
API_BASE_URLempty when the frontend and backend are served from the same origin (e.g. behind an Nginx reverse proxy that routes/apito the manager). - Set the full backend URL (including the
/api/v1path) when the manager runs on a different host/port. In that case the manager must allow the frontend origin via its CORSallowed_originssystem config.
npm run buildproduces a staticdist/directory.- Serve
dist/with any static file server (Nginx, Caddy, etc.). - Edit
dist/env.jsto pointAPI_BASE_URLat your manager backend. - (Recommended) Put a reverse proxy in front so
/apiis forwarded to the manager — thenAPI_BASE_URLcan stay empty and no CORS configuration is needed.