444 lines
22 KiB
Markdown
444 lines
22 KiB
Markdown
# ZQ Platform
|
||
|
||
<div align="center">
|
||
|
||
[](LICENSE)
|
||
[](backend/)
|
||
[](backend/)
|
||
[](web/)
|
||
[](web/)
|
||
|
||
**A Full-Stack Enterprise Low-Code / No-Code Development Platform Based on FastAPI + Vue 3**
|
||
|
||
English | [简体中文](README.md)
|
||
|
||
</div>
|
||
|
||
## 🌐 Links
|
||
|
||
- **Official Website**: <https://zq-platform.com/>
|
||
- **Demo Link**: <https://opensource.zq-platform.com/>
|
||
- **Demo Account**: zhangwei
|
||
- **Demo Password**: 123456
|
||
|
||
***
|
||
|
||
## 📖 Introduction
|
||
|
||
ZQ Platform is a full-featured enterprise-level development platform with a decoupled frontend-backend architecture. The backend is built on **FastAPI** asynchronous framework, and the frontend is powered by **Vue 3** + **Element Plus** + **Vben Admin 5.x**.
|
||
|
||
The platform integrates RBAC permission management, organization management, **online form/page design (no-code)**, instant messaging, AI chat, third-party login and organization sync, system monitoring, scheduled tasks, data source management, code generator, and many other enterprise-grade modules, significantly accelerating enterprise application development.
|
||
|
||
## 🎯 No-Code Capabilities — Fully Open-Source, Free, and Unrestricted
|
||
|
||
The no-code (online development) module of ZQ Platform is one of its core highlights. Compared to mainstream no-code/low-code platforms on the market, it offers the significant advantages of being **fully open-source, completely free, and entirely unrestricted**.
|
||
|
||
### Comparison with Similar Platforms
|
||
|
||
| Dimension | ZQ Platform | DingTalk YiDa | Baidu AiSuDa | NocoBase |
|
||
| ---------------------- | --------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------- |
|
||
| **License** | fully open-source | ❌ Closed-source commercial | ❌ Closed-source commercial | ⚠️ AGPL 3.0 (copyleft, commercial restrictions) |
|
||
| **Free to Use** | ✅ Completely free, no hidden costs | ❌ Pay per user/form/process | ❌ Pay per edition, feature limitations | ⚠️ Community edition limited, enterprise edition paid |
|
||
| **User Limit** | ✅ Unlimited | ❌ Limited by plan | ❌ Limited by edition | ⚠️ Community edition has user limits |
|
||
| **Deployment** | ✅ Self-hosted, data fully under your control | ⚠️ SaaS-focused, very high self-hosting cost | ⚠️ SaaS-focused, self-hosting needs enterprise edition | ✅ Supports self-hosting |
|
||
| **Custom Development** | ✅ Unlimited, can modify source code freely | ❌ Not supported | ❌ Limited support | ⚠️ AGPL restricts commercial customization |
|
||
| **Commercial Use** | ✅ Apache 2.0 allows free + LICENSE\_SUPPLEMENTAL commercial use | ❌ Must purchase commercial license | ❌ Must purchase commercial license | ⚠️ AGPL requires purchased license for commercial use |
|
||
| **Database Support** | PostgreSQL / MySQL | Cloud database only | Cloud database only | PostgreSQL |
|
||
| **Frontend Tech** | Vue 3 + Element Plus (mainstream) | Closed stack, cannot customize | Closed stack | React + Ant Design |
|
||
| **Backend Tech** | Python FastAPI (async, high-performance) | Closed | Closed | Node.js + Koa |
|
||
|
||
### No-Core Features
|
||
|
||
#### 📝 Online Form Designer
|
||
|
||
- **Drag-and-Drop Design**: Intuitive drag-and-drop operations to build complex forms without writing any code
|
||
- **Rich Component Library**: 30+ components including text input, number, date, dropdown select, cascade select, file upload, rich text, sub-forms, etc.
|
||
- **Complex Layout**: Supports multi-column, grouping, table layout, tabs, and other complex page layouts
|
||
- **Conditional Logic**: Field visibility conditions, validation rules, and linkage logic configuration
|
||
- **Mobile Adaptation**: Automatically adapts to both PC and mobile displays
|
||
|
||
#### 📄 Online Page Designer
|
||
|
||
- **Visual Page Composition**: Freely combine forms, charts, data tables and other components into complete business pages
|
||
- **Data Binding**: Supports data source binding and API integration for real-time interaction with backend data
|
||
- **Permission Integration**: Page-level access control, seamlessly integrated with the RBAC permission system
|
||
|
||
#### 📊 Dashboard Designer
|
||
|
||
- **Rich Chart Components**: 20+ chart types including line, bar, pie, radar, funnel, heatmap, sankey, K-line, etc.
|
||
- **Business Components**: Announcement list, to-do items, quick links, ranking list, server monitor, weather widget, etc.
|
||
- **Data Filtering**: Supports interactive data filtering with date picker, input search, etc.
|
||
- **Free Layout**: Drag-and-drop free layout with customizable size and position
|
||
|
||
#### 🔗 Data Management
|
||
|
||
- **Data Source Management**: Connect external databases (PostgreSQL / MySQL / SQL Server) as data sources
|
||
- **Form Data Management**: Auto-generates list, detail, edit, and delete functionality for form data
|
||
- **Data Import/Export**: Supports Excel format data import and export
|
||
|
||
### Use Cases
|
||
|
||
- **Enterprise Internal Systems**: OA, CRM, ERP, inventory management, project management, etc.
|
||
- **Business Process Digitalization**: Approval workflows, ticketing systems, reporting systems, etc.
|
||
- **Rapid Prototyping**: Quick validation and iteration of business requirements
|
||
- **SaaS Platform Construction**: Multi-tenant application development
|
||
- **Data Collection & Analysis**: Surveys, data gathering, statistical analysis
|
||
|
||
***
|
||
|
||
## 🏗 Tech Stack
|
||
|
||
### Backend
|
||
|
||
| Technology | Description |
|
||
| ------------------------------------------------------------------ | ----------------------- |
|
||
| [FastAPI](https://fastapi.tiangolo.com/) | Web framework (0.121+) |
|
||
| [SQLAlchemy 2.0](https://www.sqlalchemy.org/) | Async ORM |
|
||
| [Alembic](https://alembic.sqlalchemy.org/) | Database migrations |
|
||
| [PostgreSQL 16+](https://www.postgresql.org/) / MySQL / SQL Server | Database |
|
||
| [Redis](https://redis.io/) | Cache & messaging |
|
||
| [APScheduler 4.x](https://apscheduler.readthedocs.io/) | Task scheduling |
|
||
| [MinIO](https://min.io/) / OSS / Azure Blob | File storage |
|
||
| [Qdrant](https://qdrant.tech/) | Vector database (RAG) |
|
||
| [OpenAI](https://openai.com/) / Anthropic / DashScope | AI LLM integration |
|
||
| [WebSocket](https://websockets.readthedocs.io/) | Real-time communication |
|
||
|
||
### Frontend
|
||
|
||
| Technology | Description |
|
||
| ---------------------------------------------------------- | ---------------------------------------- |
|
||
| [Vue 3](https://vuejs.org/) | Frontend framework |
|
||
| [TypeScript](https://www.typescriptlang.org/) | Type safety |
|
||
| [Element Plus](https://element-plus.org/) | UI component library |
|
||
| [Vben Admin 5.x](https://github.com/vbenjs/vue-vben-admin) | Admin framework |
|
||
| [Vite](https://vitejs.dev/) | Build tool |
|
||
| [Pinia](https://pinia.vuejs.org/) | State management |
|
||
| [Vue Router](https://router.vuejs.org/) | Routing |
|
||
| [i18n](https://vue-i18n.intlify.nuxt.dev/) | Internationalization (zh-CN/en-US/zh-TW) |
|
||
| [ECharts](https://echarts.apache.org/) | Chart visualization |
|
||
| [Tiptap](https://tiptap.dev/) | Rich text editor |
|
||
| [CodeMirror](https://codemirror.net/) | Code editor |
|
||
|
||
## ✨ Key Features
|
||
|
||
### 🔐 User & Permissions
|
||
|
||
- **User Management**: Full CRUD, avatar upload, password policies
|
||
- **Role Management**: RBAC-based role permission assignment
|
||
- **Menu Management**: Dynamic menu configuration with permission control
|
||
- **Department Management**: Tree-based organization structure
|
||
- **Position Management**: Position association and staffing
|
||
- **Resource Permissions**: Granular field-level permission control
|
||
- **Data Permissions**: Department/user-based data scope isolation
|
||
|
||
### 🏢 Organization
|
||
|
||
- **Org Chart**: Visual organization chart
|
||
- **Department Tree**: Unlimited hierarchical department management
|
||
- **Enterprise Sync**: DingTalk, Feishu (Lark), WeCom organization/user sync
|
||
|
||
### 🔗 Third-Party Integration
|
||
|
||
- **OAuth Login**: Gitee, GitHub, QQ, Google, WeChat, Microsoft, DingTalk, Feishu, WeCom
|
||
- **Notifications**: Email (SMTP), SMS (Aliyun/Tencent), DingTalk bot, Feishu bot, WeCom bot, WeChat Official Account
|
||
- **File Storage**: Local storage, MinIO, Aliyun OSS, Azure Blob Storage
|
||
|
||
### 📱 No-Code Capabilities
|
||
|
||
- **Online Form Designer**: Drag-and-drop form builder with complex form design
|
||
- **Form Data Management**: Form data CRUD with dynamic queries
|
||
- **Online Page Designer**: Visual page editor
|
||
- **Dashboard Designer**: Drag-and-drop dashboard builder with rich chart components
|
||
- **Code Generator**: Multiple encoding modes (date sequence, serial numbers, etc.)
|
||
|
||
### 💬 Instant Messaging
|
||
|
||
- **Real-time Chat**: WebSocket-based private and group chat
|
||
- **Message Management**: Unread counts, mute notifications, pinned conversations
|
||
- **System Notifications**: System alerts and announcement management
|
||
|
||
### 🤖 AI Capabilities
|
||
|
||
- **AI Chat**: Integration with OpenAI, Anthropic (Claude), DashScope (Tongyi Qianwen) and more
|
||
- **Knowledge Base**: RAG (Retrieval-Augmented Generation) based on Qdrant vector database
|
||
|
||
### ⚙️ System Tools
|
||
|
||
- **Data Dictionary**: Business dictionary management (tree/list)
|
||
- **System Configuration**: Dynamic system parameter configuration
|
||
- **UI Configuration**: Frontend preference settings (dynamically loaded from backend)
|
||
- **Scheduled Tasks**: APScheduler-based task scheduling management
|
||
- **File Management**: File upload, preview, chunked upload
|
||
- **Data Source Manager**: External database connection management
|
||
- **API Tokens**: API access token management
|
||
- **Region Manager**: Geographic data management
|
||
|
||
### 🌐 Internationalization
|
||
|
||
- Chinese Simplified, Chinese Traditional, English
|
||
- Fully internationalized frontend UI
|
||
- Backend error message i18n support
|
||
|
||
## 🚀 Quick Start
|
||
|
||
### Prerequisites
|
||
|
||
- Python 3.12+
|
||
- Node.js 20.10+
|
||
- pnpm 9.12+
|
||
- PostgreSQL 16+
|
||
- Redis
|
||
|
||
### Backend Setup
|
||
|
||
```bash
|
||
cd backend
|
||
|
||
# Create virtual environment
|
||
python -m venv venv
|
||
source venv/bin/activate # Linux/Mac
|
||
|
||
# Install dependencies
|
||
pip install -r requirements.txt
|
||
|
||
# Configure environment variables
|
||
cp env/example.env env/dev.env
|
||
# Edit env/dev.env to configure database connection, etc.
|
||
|
||
# Run database migrations
|
||
alembic upgrade head
|
||
|
||
# Start development server
|
||
uvicorn main:app --reload --port 8000
|
||
```
|
||
|
||
### Frontend Setup
|
||
|
||
```bash
|
||
cd web
|
||
|
||
# Install dependencies
|
||
pnpm install
|
||
|
||
# Start development server (Element Plus version by default)
|
||
pnpm dev
|
||
|
||
```
|
||
|
||
Visit <http://localhost:5777> to access the system.
|
||
|
||
### 🐳 Docker Compose Deployment
|
||
|
||
The project provides a complete Docker Compose deployment solution located in the `docker/` directory. It can start PostgreSQL, Redis, backend, and frontend services with a single command.
|
||
|
||
#### Prerequisites
|
||
|
||
- [Docker](https://www.docker.com/) >= 24.0
|
||
- [Docker Compose](https://docs.docker.com/compose/) >= 2.20
|
||
|
||
#### Deployment Steps
|
||
|
||
```bash
|
||
# 1. Navigate to the project root
|
||
cd zq-platform
|
||
|
||
# 2. (Optional) Configure environment variables
|
||
# For production, be sure to modify JWT_SECRET_KEY, DB_PASSWORD, and REDIS_PASSWORD
|
||
vim .env
|
||
|
||
# 3. Build and start all services
|
||
docker compose up -d
|
||
|
||
# 4. View startup logs
|
||
docker compose logs -f
|
||
|
||
# 5. Access the system
|
||
# Open http://localhost in your browser
|
||
```
|
||
|
||
#### Service Architecture
|
||
|
||
```text
|
||
┌─────────────┐ ┌──────────────────────────────────┐
|
||
│ Browser │ ───▶ │ Nginx (Port 80) │
|
||
└─────────────┘ │ ├─ Static files → Vue SPA │
|
||
│ ├─ /basic-api/* → backend:8000 │
|
||
│ └─ /ws/* → backend:8000 │
|
||
└──────────┬───────────────────────┘
|
||
│
|
||
┌──────────────────────┼──────────────────────┐
|
||
▼ ▼ ▼
|
||
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
|
||
│ PostgreSQL │ │ Redis │ │ Backend │
|
||
│ :5432 │ │ :6379 │ │ :8000 │
|
||
└─────────────┘ └──────────────┘ └──────────────┘
|
||
```
|
||
|
||
#### Service Details
|
||
|
||
| Service | Image | Port | Description |
|
||
|---------|-------|------|-------------|
|
||
| **postgres** | postgres:16-alpine | 5432 | Database |
|
||
| **redis** | redis:7-alpine | 6379 | Cache (AOF persistence) |
|
||
| **backend** | Custom build | 8000 | FastAPI (Uvicorn 4 workers) |
|
||
| **web** | Custom build | **80** | Nginx serving frontend + proxying API/WebSocket |
|
||
|
||
#### Common Commands
|
||
|
||
```bash
|
||
# Build and start
|
||
docker compose up -d
|
||
|
||
# View logs
|
||
docker compose logs -f
|
||
|
||
# Stop services
|
||
docker compose down
|
||
|
||
# Full cleanup (removes volumes, use for initial deployment)
|
||
docker compose down -v
|
||
|
||
# Rebuild a specific service (after code changes)
|
||
docker compose build backend
|
||
docker compose up -d backend
|
||
|
||
# Check service status
|
||
docker compose ps
|
||
```
|
||
|
||
#### Security Notes
|
||
|
||
1. **Before deploying to production, be sure to update the following secrets in `.env`**:
|
||
- `JWT_SECRET_KEY` — JWT signing key
|
||
- `DB_PASSWORD` — Database password
|
||
- `REDIS_PASSWORD` — Redis password
|
||
2. The default database is PostgreSQL. To switch to MySQL, modify the service configuration in `docker-compose.yml`.
|
||
3. File storage defaults to `local` mode. To use MinIO or OSS, configure it in `.env`.
|
||
|
||
|
||
## 🏛 Project Structure
|
||
|
||
```
|
||
zq-platform/
|
||
├── backend/ # Backend Python service
|
||
│ ├── app/ # Core application modules
|
||
│ │ ├── base_model.py # Base model
|
||
│ │ ├── base_schema.py # Common schemas
|
||
│ │ ├── base_service.py # Base service
|
||
│ │ ├── config.py # System configuration
|
||
│ │ ├── database.py # Database connection
|
||
│ │ └── ...
|
||
│ ├── core/ # Core business modules
|
||
│ │ ├── auth/ # Authentication
|
||
│ │ ├── user/ # User management
|
||
│ │ ├── role/ # Role management
|
||
│ │ ├── menu/ # Menu management
|
||
│ │ ├── dept/ # Department management
|
||
│ │ ├── permission/ # Permission management
|
||
│ │ ├── chat/ # Instant messaging
|
||
│ │ ├── file_manager/ # File management
|
||
│ │ ├── message/ # Notifications
|
||
│ │ ├── oauth/ # Third-party login
|
||
│ │ ├── code_generator/ # Code generator
|
||
│ │ ├── data_source/ # Data source management
|
||
│ │ ├── system_config/ # System configuration
|
||
│ │ ├── ui_config/ # UI configuration
|
||
│ │ ├── server_monitor/ # Server monitoring
|
||
│ │ ├── redis_monitor/ # Redis monitoring
|
||
│ │ ├── database_monitor/ # Database monitoring
|
||
│ │ ├── redis_manager/ # Redis manager
|
||
│ │ ├── database_manager/ # Database manager
|
||
│ │ ├── dingtalk_sync/ # DingTalk sync
|
||
│ │ ├── feishu_sync/ # Feishu sync
|
||
│ │ ├── wecom_sync/ # WeCom sync
|
||
│ │ ├── application/ # Application management
|
||
│ │ ├── device/ # Device management
|
||
│ │ ├── region/ # Region management
|
||
│ │ ├── login_log/ # Login logs
|
||
│ │ ├── api_token/ # API tokens
|
||
│ │ ├── link_preview/ # Link preview
|
||
│ │ ├── dict/ # Data dictionary
|
||
│ │ ├── post/ # Position management
|
||
│ │ └── resource_scope/ # Resource permissions
|
||
│ ├── online_dev/ # Online development
|
||
│ │ ├── form_manager/ # Form management
|
||
│ │ ├── form_data_manager/ # Form data management
|
||
│ │ └── page_manager/ # Page management
|
||
│ ├── scheduler/ # Scheduled tasks
|
||
│ ├── zq_demo/ # Demo module
|
||
│ ├── alembic/ # Database migrations
|
||
│ ├── main.py # Application entrypoint
|
||
│ └── requirements.txt # Python dependencies
|
||
│
|
||
├── web/ # Frontend project
|
||
│ ├── apps/
|
||
│ │ └── web-ele/ # Element Plus app version
|
||
│ │ └── src/
|
||
│ │ ├── api/ # API interfaces
|
||
│ │ ├── components/ # Business components
|
||
│ │ ├── views/ # Page views
|
||
│ │ ├── router/ # Route configuration
|
||
│ │ ├── store/ # State management
|
||
│ │ ├── locales/ # i18n
|
||
│ │ └── layouts/ # Layout components
|
||
│ ├── packages/ # Shared packages
|
||
│ │ ├── @core/ # Core packages (UI components, utils, etc.)
|
||
│ │ ├── effects/ # Business logic
|
||
│ │ ├── constants/ # Constants
|
||
│ │ ├── hooks/ # Composables
|
||
│ │ ├── icons/ # Icon library
|
||
│ │ ├── locales/ # Internationalization
|
||
│ │ ├── preferences/ # User preferences
|
||
│ │ ├── request/ # HTTP requests
|
||
│ │ ├── stores/ # State management
|
||
│ │ ├── styles/ # Styles
|
||
│ │ ├── types/ # TypeScript types
|
||
│ │ └── utils/ # Utility functions
|
||
│ └── package.json # Frontend dependencies
|
||
│
|
||
└── README.md # Project documentation
|
||
```
|
||
|
||
## 📸 Screenshots
|
||
|
||
> (Add project screenshots here)
|
||
|
||
## ✅ Environment Requirements
|
||
|
||
| Dependency | Version |
|
||
| ---------- | -------- |
|
||
| Python | >= 3.12 |
|
||
| Node.js | >= 20.10 |
|
||
| pnpm | >= 9.12 |
|
||
| PostgreSQL | >= 16 |
|
||
| Redis | >= 6.0 |
|
||
|
||
## 🤝 Contributing
|
||
|
||
Issues and Pull Requests are welcome to help improve the project.
|
||
|
||
1. Fork the repository
|
||
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
||
3. Commit your changes (`git commit -m 'feat: add some amazing feature'`)
|
||
4. Push to the branch (`git push origin feature/amazing-feature`)
|
||
5. Open a Pull Request
|
||
|
||
## 📄 License
|
||
|
||
This project adopts a dual-license structure:
|
||
|
||
- **Core License**: [Apache License 2.0](LICENSE) — Standard Apache 2.0 open-source license, permitting free use, modification, and redistribution
|
||
- **Supplemental Terms**: [ZQ-Platform Public License Supplemental Terms](LICENSE_SUPPLEMENTAL) — Additional terms governing attribution ("powered by ZQ-Platform") and trademark usage
|
||
|
||
By using this software, you agree to comply with all terms in both documents.
|
||
|
||
## 📞 Contact
|
||
|
||
- **Official Website**: <https://zq-platform.com/>
|
||
- **Source Code**: <https://github.com/jiangzhikj/zq-platform>
|
||
- **Full Version Demo**: <https://demo.zq-platform.com/>
|
||
- **Open-Source Demo**: <https://opensource.zq-platform.com/>
|
||
- **Author Email**: <jiangzhikj@outlook.com>
|
||
- **Issues**: [GitHub Issues](https://github.com/jiangzhikj/zq-platform/issues)
|
||
|