Enterprise authentication and security platform (Java 17 + Spring Boot 4 + React/TypeScript).
# Start dependencies (MySQL, Redis, RabbitMQ, MinIO)
docker compose -f compose.yaml up -d
# Start backend
./gradlew bootRun
# Start frontend (proxies /api to localhost:8080)
cd frontend && npm install && npm run dev
# Build everything for deployment
./deploy-server.sh# Backend
./gradlew clean bootJar --no-daemon
# Frontend (runs tsc + vite build)
cd frontend && npm run build
# Plugin (each plugin is its own Gradle project)
./gradlew -p plugins/rsa-crypto-plugin clean jar --no-daemon
# Tests
./gradlew test
# Frontend lint
cd frontend && npm run lintsrc/— Spring Boot backend (MyBatis-Plus, Security, WebSocket, RabbitMQ)frontend/— React + TypeScript (Vite, Ant Design, ECharts)plugins/— PF4J plugins (each subfolder is a standalone Gradle project)ciphergate-plugin-api/— shared plugin API (included in main build viasettings.gradle)deploy-bundle/— packaging output (JAR + frontend dist + plugins + compose)
- Ports: backend 8080 (prod via
BACKEND_PORT), frontend dev 5173 (Vite default) - Frontend proxy: Vite proxies
/apitohttp://localhost:8080(seefrontend/vite.config.ts) - MyBatis-Plus: logical deletes enabled (
deletedfield, 1=deleted, 0=active) - Config: environment variables override
application.yamldefaults; seecompose.yamland.env.serverfor local credentials - CI: GitHub Actions builds on Windows (
deploy-server.bat); local dev uses.shscripts - Plugin system: PF4J; plugins declare
Plugin-Classin manifest, depend onciphergate-plugin-api
- Root
package.jsonis only forcaveman-installer— not the frontend. Frontend isfrontend/package.json. - CI runs
deploy-server.bat(Windows); local dev usesdeploy-server.sh— both do the same steps. - Docker Compose services use non-standard host ports (e.g., MySQL 13306, Redis 16379) to avoid conflicts.
- Frontend build (
npm run build) runs TypeScript compilation first (tsc -b) — type errors will fail the build.