This file provides guidance to Qoder (qoder.com) when working with code in this repository.
paicoding-admin is a React-based admin panel for the 技术派 (PaiCoding) community platform. Built with React 18, TypeScript, Vite 3, Ant Design 5.x, Redux, and React Router v6.
npm run dev
# Starts dev server at http://127.0.0.1:3301
# Default login credentials: admin/admin# Production build
npm run build:pro
# Development build
npm run build:build:dev
# Test build
npm run build:testnpm run preview# ESLint check and auto-fix
npm run lint:eslint
# Prettier formatting
npm run lint:prettier
# Stylelint for CSS/Less/SCSS
npm run lint:stylelint
# Run lint-staged (pre-commit hook)
npm run lint:lint-staged# Automated commit flow with commitizen
npm run commit- Uses Redux with redux-persist for state persistence
- Key modules:
global,menu,tabs,auth,breadcrumb,disc - Location:
src/redux/modules/ - Store configuration:
src/redux/index.ts - Redux DevTools enabled in development
- Middleware: redux-thunk, redux-promise
- React Router v6 with lazy loading support
- Route modules auto-loaded from
src/routers/modules/*.tsxusingimport.meta.globEager - Main router config:
src/routers/index.tsx - Route definitions:
src/routers/route.tsx - Supports nested routes, route guards, and multi-tab navigation
- Axios-based HTTP client with custom wrapper class
RequestHttp - Global request/response interceptors
- Features: automatic token injection, loading states, error handling, request cancellation
- Base URL configured via
VITE_API_URLenvironment variable - API modules organized by feature in
src/api/modules/ - Main config:
src/api/index.ts
- Main layout:
src/layouts/index.tsx - Components: Header, Menu, Tabs, Footer
- Uses Ant Design Layout with collapsible sidebar
- Responsive design with window resize handling
src/
├── api/ # API request definitions by module
├── assets/ # Static assets (images, icons, etc.)
├── components/ # Reusable components
├── config/ # Configuration files
├── enums/ # TypeScript enums
├── hooks/ # Custom React hooks
├── layouts/ # Layout components (Header, Menu, Footer, Tabs)
├── redux/ # Redux store and modules
├── routers/ # Route configuration and modules
├── styles/ # Global styles
├── typings/ # TypeScript type definitions
├── utils/ # Utility functions
└── views/ # Page components by feature
statistics/: Dashboard with ECharts data visualizationconfig/: Platform operation configurationarticle/: Article managementcolumn/: Column configurationresume/: Tutorial/course configurationauthor/: User/author managementcategory/: Category managementtag/: Tag managementglobal/: Global settingslogin/: Authentication
- Development:
.env.development- Backend athttp://127.0.0.1:8080 - Production:
.env.production - Test:
.env.test
- Backend project: paicoding
- Spring Boot-based community platform
- Ensure Redis and backend server are running before starting admin panel
- Strict TypeScript enabled
- Path alias
@configured tosrc/ - Config:
tsconfig.json
- Proxy configured for
/adminand/api/admintohttp://127.0.0.1:8080 - Port: 3301 (configurable via
VITE_PORT) - Gzip compression enabled for production builds
- Bundle visualization available with
VITE_REPORT - SVG icons via vite-plugin-svg-icons
- Config:
vite.config.ts
- ESLint with TypeScript, React, and Prettier integration
- Prettier for code formatting
- Stylelint for CSS/Less/SCSS
- Husky + lint-staged for pre-commit hooks
- Commitizen + commitlint for commit message conventions
If npm install fails:
- Upgrade Node.js to 16+ (recommended 18+)
- Try:
npm install --registry=http://registry.npmmirror.com - If ECONNRESET error:
npm config set registry http://registry.npmjs.org/ - Delete
node_modulesand reinstall
Helper script for common tasks:
./launch.sh install # Install dependencies
./launch.sh server # Start dev server
./launch.sh pro # Build, package, and deploy to serverIf $'\r': command not found error:
sed -i 's/\r//' launch.sh
# or
dos2unix launch.sh