5.5 KiB
5.5 KiB
Technology Stack
Analysis Date: 2026-03-21
Languages
Primary:
- Go 1.24.0 - Backend server, all business logic, API handlers
- TypeScript ~5.6.3 - Frontend admin panel (
web/admin/src/)
Secondary:
- SQL - Database migrations (
migrations/directory) - TOML - Configuration files (
configs/*.toml) - SCSS - Frontend styles (
web/admin/src/assets/styles/)
Runtime
Backend:
- Go runtime 1.24.0 (toolchain go1.24.2)
- Docker:
golang:1.24-alpinebuild stage,alpine:latestfinal stage
Frontend:
- Node.js >= 18.0.0
Package Manager:
- Go modules (
go.mod/go.sum) - lockfile present - pnpm >= 8.8.0 - frontend (
web/admin/pnpm-lock.yaml) - lockfile present
Frameworks
Backend Core:
github.com/gin-gonic/gin v1.9.1- HTTP web frameworkgorm.io/gorm v1.25.9- ORM for MySQLgorm.io/gen v0.3.26- GORM code generation from schemagorm.io/plugin/dbresolver v1.5.0- Read/write split support
Frontend Core:
- Vue 3
^3.5.21- UI framework (web/admin/src/) - Vite
^5.4.10- Build tool and dev server - Element Plus
^2.11.2- UI component library - Pinia
^3.0.3- State management - Vue Router
^4.5.1- Client-side routing - Tailwind CSS
^4.1.14- Utility-first CSS
Testing (Backend):
github.com/stretchr/testify v1.11.1- Assertionsgithub.com/DATA-DOG/go-sqlmock v1.5.2- MySQL mockgithub.com/alicebob/miniredis/v2 v2.36.1- In-memory Redis for testsgorm.io/driver/sqlite v1.4.3- SQLite for in-memory test DB (internal/repository/mysql/testrepo_sqlite.go)
Testing (Frontend):
- Vitest
^1.0.0- Unit test runner @vue/test-utils ^2.4.0- Vue component testing
Build/Dev (Backend):
- Makefile - Task runner (
Makefile) golangci-lint- Linter (install viamake tools)go-swagger- Swagger generation (install viamake tools)cmd/mfmt/main.go- Custom import formatter (groups: stdlib, local, third-party)cmd/gormgen/main.go- GORM model/DAO code generator
Build/Dev (Frontend):
- ESLint
^9.9.1+ TypeScript ESLint^8.3.0- Linting - Prettier
^3.5.3- Code formatting - Stylelint
^16.20.0- CSS/SCSS linting - Husky
^9.1.5+ lint-staged - Pre-commit hooks - Terser
^5.36.0- Minification vite-plugin-compression ^0.5.1- Gzip compression for production
Key Dependencies
Critical (Backend):
github.com/spf13/viper v1.17.0- Configuration management (TOML, env var overrides)go.uber.org/zap v1.26.0- Structured logginggopkg.in/natefinch/lumberjack.v2 v2.2.1- Log file rotationgithub.com/golang-jwt/jwt/v5 v5.2.0- JWT auth tokensgithub.com/redis/go-redis/v9 v9.17.2- Redis client (singleton)github.com/go-sql-driver/mysql v1.7.1- MySQL drivergithub.com/bytedance/sonic v1.13.2- High-performance JSON encoder/decodergithub.com/bwmarrin/snowflake v0.3.0- Distributed ID generationgithub.com/go-resty/resty/v2 v2.10.0- HTTP client for external API callsgithub.com/prometheus/client_golang v1.17.0- Prometheus metricsgolang.org/x/crypto v0.44.0- Cryptographic utilities
Critical (Frontend):
- Axios
^1.12.2- HTTP client for API calls - Echarts
^6.0.0- Charts and data visualization @vueuse/core ^13.9.0- Vue composition utilitiespinia-plugin-persistedstate ^4.3.0- Persistent state storagedayjs ^1.11.19- Date/time manipulationcrypto-js ^4.2.0- Client-side cryptographyxlsx ^0.18.5- Excel file generation/parsing@wangeditor/editor ^5.1.23- Rich text editor
Infrastructure (Backend):
go.opentelemetry.io/otel v1.39.0- Distributed tracing (OTLP HTTP exporter)github.com/gin-contrib/pprof v1.4.0- Go profiling endpointgithub.com/swaggo/gin-swagger v1.6.0- Swagger UI embedded in Gingithub.com/tealeg/xlsx v1.0.5- Excel file generation (server-side)github.com/rs/cors/wrapper/gin v0.0.0-20231013084403-73f81b45a644- CORS middleware
Configuration
Backend Environment:
- Set via
ENVenvironment variable:dev|fat|uat|pro(default:fat) - Config files embedded into binary at build time via
//go:embeddirectives - Config files:
configs/dev_configs.toml,configs/fat_configs.toml,configs/uat_configs.toml,configs/pro_configs.toml - TOML format parsed via Viper (
github.com/spf13/viper)
Environment Variable Overrides (at runtime):
MYSQL_ADDR,MYSQL_READ_ADDR,MYSQL_WRITE_ADDR,MYSQL_USER,MYSQL_PASS,MYSQL_NAMEREDIS_ADDR,REDIS_PASSWECHAT_MCHID,WECHAT_SERIAL_NO,WECHAT_PRIVATE_KEY_PATH,WECHAT_API_V3_KEY,WECHAT_NOTIFY_URL,WECHAT_PUBLIC_KEY_ID,WECHAT_PUBLIC_KEY_PATHALIYUN_SMS_ACCESS_KEY_ID,ALIYUN_SMS_ACCESS_KEY_SECRET,ALIYUN_SMS_SIGN_NAME,ALIYUN_SMS_TEMPLATE_CODEADMIN_JWT_SECRET- Admin JWT signing secret override
Frontend Environment:
- Vite env vars:
VITE_VERSION,VITE_PORT,VITE_BASE_URL,VITE_API_URL,VITE_API_PROXY_URL - Dev proxy:
/apirequests forwarded toVITE_API_PROXY_URL
Build:
- Backend:
Dockerfile(multi-stage,golang:1.24-alpine→alpine:latest) - Server port:
9991(constant inconfigs/constants.go) - Container exposes port
9991
Platform Requirements
Development:
- Go 1.24+
- Node.js >= 18.0.0, pnpm >= 8.8.0
- MySQL instance (read/write addresses)
- Redis instance
golangci-lintandgo-swaggerfor linting/docs
Production:
- Docker (Linux/amd64 binary, CGO_ENABLED=0)
- Alpine Linux container
- MySQL with optional read replica (master-slave)
- Redis single-node
- Optional: OpenTelemetry-compatible collector (Tempo) at configured OTLP endpoint
Stack analysis: 2026-03-21