## Conni-X-Pro

English | 简体中文 | 日本語

Conni-X-Pro Java Vue Vite License

Quick Start · Features · Tech Stack · Module Architecture · API & Conventions · Contributing

A full-stack open-source project for AI creation and workflows: frontend built with Vue 3 + Vite + TypeScript + Element Plus, backend powered by Spring Boot 3 multi-module architecture, integrating authentication, chat (LLM/OpenRouter streaming), ComfyUI workflow orchestration, object storage (Aliyun OSS), email notifications, system management, and more. ### Feature Preview

功能预览1 功能预览2 功能预览3 功能预览4 功能预览5 功能预览6 功能预览7 功能预览8 功能预览9 功能预览10 功能预览11 功能预览12

### ComfyUI Starter Kit for Demonstration​ Files shared via cloud storage: 2 files including "2_整合包ComfyUI-aki-1.6.rar" Link: https://pan.baidu.com/s/1hcsZiz367FtK4pJHRWVa_g?pwd=iavj Code: iavj ### Features - **Authentication & Authorization**: Built on Sa-Token with Bearer Token approach, includes built-in API access filtering and route filtering. - **Chat & AI Capabilities**: Integrated with OpenRouter, multi-model registration and auto-selection; SSE streaming chat, multi-language support with rich-text highlighting (primarily leverages free API model services - see yml config and backend docs for details). - **ComfyUI Workflows**: Form-based parameter collection, task submission and status subscription, timeout & retry strategies, file type whitelist, multi-ComfyUI server support (submit, cancel, remake tasks). - **Object Storage**: Aliyun OSS upload and display, global file type and size limit configuration. - **Notifications**: Email verification codes/notifications (Thymeleaf templates), system announcements and in-app notifications. - **System Management**: User/credits management, announcements, redemption codes, statistics dashboard, and other common admin features. ### Deployment #### Backend Deployment The backend is a standard Spring Boot multi-module project that can be packaged into an executable JAR file for deployment. We provide comprehensive deployment documentation covering traditional servers, Docker containers, and Kubernetes (K8s) deployment scenarios. 👉 **[View detailed backend deployment guide](./singleton/README.md)** #### Frontend Deployment The frontend project is built with Vue 3 and Vite. For deployment, it needs to be compiled into static files and hosted using web servers like Nginx with reverse proxy configuration. 👉 **[View detailed frontend deployment guide](./vue/README.md)** ### Tech Stack - **Frontend**: Vue 3, Vite, TypeScript, Pinia, Vue Router, Element Plus, vue-i18n, highlight.js, lottie-web, @google/model-viewer. - **Backend**: Spring Boot 3, Web + WebFlux (SSE), Sa-Token, MyBatis-Plus, Druid, MySQL, Redis (Redisson), Spring Mail, WebSocket, Lombok, Guava. ### Module Architecture ``` singleton/ # Backend multi-module aggregation project (Maven) application/ # Executable startup module (aggregating business modules) common/ # Common dependencies: config, interceptors, utils, storage, auth, etc. auth/ # Authentication & user-related APIs comfyui/ # ComfyUI task orchestration & WebSocket push llm/ # LLM chat & model registration (OpenRouter) notice/ # Notifications & announcements oss/ # Aliyun OSS capability wrapper system/ # System management domain vue/ # Frontend project (Vite) ``` ### Quick Start #### Prerequisites - JDK 21+ (22 recommended) - Maven 3.9+ - Node.js 18+ / pnpm or npm - MySQL 8+, Redis 6+ #### Backend Configuration 1. Copy or reference `singleton/application/src/main/resources/application-dev.yml`, and modify the following key items as needed: - `spring.datasource.url/username/password` (MySQL) - `spring.data.redis.host/port/password` (Redis) - `spring.mail.*` (Optional, email verification codes/notifications) - `ali.oss.*` (Aliyun OSS) - `comfyui.server[*].url` (ComfyUI service address) - `open-router.api-key` (OpenRouter API Key) 2. Start (development mode): ```bash mvn -f singleton/pom.xml -pl application -am spring-boot:run -Pdev ``` Or package: ```bash mvn -f singleton/pom.xml -Pdev clean package java -jar singleton/application/target/application-*.jar ``` 3. Default backend address: `http://localhost:9898/api` (`server.servlet.context-path=/api`). #### Development Environment Configuration Details (application-dev.yml) Example (replace placeholders with your own values): ```yaml spring: datasource: url: jdbc:mysql://127.0.0.1:3306/ghosts?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&allowMultiQueries=true&useSSL=true # MySQL connection string username: root # Database user password: "" # Database password data: redis: database: 1 # Logical DB (0-15) host: 127.0.0.1 # Redis host port: 6379 # Redis port password: "" # Leave empty if no password mail: host: smtp.qq.com # SMTP server username: "@qq.com" # Sender email password: "" # Auth code/app-specific password default-encoding: UTF-8 # Encoding properties: mail: smtp: socketFactory: class: javax.net.ssl.SSLSocketFactory # Enable SSL port: 587 # SMTP port admin: init: enabled: true # Enable auto admin initialization email: admin@example.com # Admin email password: admin123 # Admin password nickname: System Admin # Admin nickname initial-credits: 1000000 # Initial credits ali: certified: access-key: "" # Aliyun AK secret-key: "" # Aliyun SK oss: endpoint: "oss-accelerate.aliyuncs.com" # OSS endpoint bucket-name: "" # OSS bucket name domain: "https://.oss-accelerate.aliyuncs.com" # OSS domain supported-file-types: - extension: "jpg" # File extension mimeType: "image/jpeg" # MIME type maxSizeInBytes: 5242880 # Max size per file comfyui: server: - name: COMFYUI-1 # Server identifier url: http://localhost:8188 # ComfyUI address submit-task-max: 100 # Max task queue task: max-retry-time: 30 # Single connection timeout (seconds) max-retries: 2 # Retry count on failure timeout-check-interval: 30 # Timeout check interval (minutes) supported-file-types: jpg: "image/jpeg" # Allowed upload types in forms png: "image/png" open-router: api-key: "" # OpenRouter API Key base-url: "https://openrouter.ai/api/v1" # API base URL connect-timeout: 30000 # Connection timeout (ms) read-timeout: 60000 # Read timeout (ms) chat: session-ttl-seconds: 2592000 # Session TTL (seconds) truncation: response-token-reserve: 2000 # Token reserve for response text-chars-per-token: 4 # Text chars per token image-token-estimate: 1500 # Token estimate per image file-token-estimate: 4000 # Token estimate per file enable-compression: true # Enable text compression plugins: web: enabled: true # Enable web search max-results: 5 # Max results file-parser: enabled: true # Enable file parsing pdf: engine: pdf-text # OCR engine static-filename: document.pdf # Default filename remote-registry: enabled: true # Enable model pulling url: "https://openrouter.ai/api/frontend/models" # Model list URL cron: "0 0/30 * * * ?" # Refresh interval read-timeout-seconds: 10 # Read timeout (seconds) filter: FREE # Model scope: ALL/FREE/PAID auto: modelId: "" # Fixed model (optional) prefer: FREE # FREE/PAID audio: max-size-bytes: 20971520 # Max audio size allowed-formats: - wav - mp3 default-format: wav # Default format reasoning: enabled: true # Enable deep thinking max-tokens: 2000 # Max tokens for reasoning upload: max-attachment-count: 8 # Max attachments per message server: port: 9000 # Dev port (can change to 9898 to match frontend) servlet: context-path: /api # API prefix ``` #### Start Frontend ```bash cd vue npm i npm run dev ``` Visit: `http://localhost:5173` ### API & Conventions - Base prefix: `/api` - Auth header: `Authorization: Bearer ` (Sa-Token) - Response structure and status codes: Follow backend unified conventions (see `common` module and controllers). ### Security & Compliance - Do not commit sensitive credentials (database, email, OSS, OpenRouter Key, etc.) to the repository. - It's recommended to use environment variables or private configuration files to override sample configurations. - For public demo scenarios, limit file upload types and sizes (this project provides global whitelists and size limits). ### Roadmap (Suggestions) - Cross-model session sharing and message replay optimization - ComfyUI node template management and auto-form generation - More fine-grained permissions and audit logs - Complete E2E/unit testing and CI/CD workflows ### Contributing Issues and PRs are welcome: - Follow commit message conventions, preferably with reproduction steps or screenshots - For new modules, please supplement with relevant documentation and sample configuration ### Support the Author If this project helps you, feel free to support via WeChat donation:

WeChat Donation Code