mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-30 08:16:37 +08:00
9a9e83dda0
Add comprehensive documentation of project conventions including: - Encryption patterns (AES with node secret PSK) - API envelope structure (code, msg, data, ts) - Build peculiarities (minify: false, rolldown-vite, UPX compression) - Unique styles (flat monorepo, asymmetric Go layout, hybrid frontend mode) - Module boundaries and anti-patterns - Large file hotspots and code map references Updated 7 AGENTS.md files across root and submodules.
2.6 KiB
2.6 KiB
VITE FRONTEND KNOWLEDGE BASE
Generated: Sun Feb 15 2026
OVERVIEW
Web management console for FLVX. Stack: React 18, Vite 5 (rolldown-vite), TypeScript, TailwindCSS 4, HeroUI.
STRUCTURE
vite-frontend/
├── src/
│ ├── api/ # Axios wrapper + typed endpoint helpers
│ ├── components/ # Shared UI components (HeroUI based)
│ ├── config/ # Site config (title, repo, version)
│ ├── layouts/ # Admin vs H5 page chrome
│ ├── pages/ # Route views (many large single-file pages)
│ ├── utils/ # Auth/JWT + WebView helpers
│ ├── App.tsx # Routes + ProtectedRoute + H5 layout selection
│ ├── main.tsx # ReactDOM + Providers (HeroUI, Theme, Toast)
│ └── provider.tsx # Context provider wrapper
├── vite.config.ts # base '/', host 0.0.0.0:3000; build minify/treeshake disabled
├── eslint.config.mjs # ESLint 9 flat config
└── package.json
WHERE TO LOOK
| Task | Location | Notes |
|---|---|---|
| Route definitions | src/App.tsx |
React Router v6; H5 detection logic |
| API Client | src/api/network.ts |
Sets Authorization header (raw token) |
| Endpoint Calls | src/api/index.ts |
Thin Network.post wrappers |
| Login Flow | src/pages/index.tsx |
Calls login(), stores localStorage.token |
| Auth Logic | src/utils/auth.ts |
isAdmin() checks role_id == 0 |
| Token Decoding | src/utils/jwt.ts |
Checks exp vs current time |
| WebView Logic | src/utils/panel.ts |
Handles panel address selection in app mode |
CONVENTIONS
- Auth: JWT stored as
localStorage.token. Sent inAuthorizationheader (no "Bearer" prefix). - API: Default base URL is
/api/v1/. Responses follow{code, msg, data, ts}structure. - WebView: In WebView mode, base URL is derived from selected panel address. If unset, API returns
code: -1. - Routing: URL query param
h5=trueforces mobile layout. - Build:
minify: false,treeshake: false- unoptimized production bundles for debugging. - ESLint:
react-hooks/exhaustive-depsdisabled, unused vars starting with_ignored. - Large Pages:
forward.tsx(3263 LOC),tunnel.tsx(2552 LOC),node.tsx(2194 LOC).
ANTI-PATTERNS
- DO NOT ADD tests - no test infrastructure (Vitest/Jest not configured).
NOTES
- Uses
rolldown-vite(experimental Rust bundler) instead of standard Vite. - ESLint Flat Config format with custom import ordering rules.
COMMANDS
cd vite-frontend
npm run dev
npm run build
npm run lint