# x-magic
**Repository Path**: x-script/x-magic
## Basic Information
- **Project Name**: x-magic
- **Description**: 🎉🔥xMagic 是一个基于xScript实现的轻量级的运行时,依托其强大基础库和业务承载能力,具有 轻量化、跨平台、效率高、国产信创 等特性,适合快速敏捷的开发轻量级数字应用系统,底层提供类 JavaScript 原生 API 和函数环境,以及支持多种数据库和功能扩展。
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: http://doc.the.bb
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 0
- **Created**: 2024-10-27
- **Last Updated**: 2025-04-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 低代码, JavaScript
## README
# 就像魔法师那样去实现想法吧
xMagic - 仓湖云函数数字应用平台 V1.0
数据中台、业务中台、低代码、数据大屏、审批流程、消息订阅
只需掌握JavaScript便可进行前后端业务开发
[](https://qm.qq.com/q/wgJuNwzXOM)
[](https://www.elastic.co/cn/licensing/elastic-license)
[](https://gitee.com/x-script/release)
🎉 前端仓库:https://gitee.com/x-script/x-magic-front-original
🎉 后端仓库:https://gitee.com/x-script/x-magic
🍺 核心下载地址:https://github.com/xxpq/tata_bin/actions/runs/13781805008
🎉 开发文档:http://doc.the.bb
🎉 在线预览:https://demo.l-l.cn/app/panel/#/login
测试账户:root 登陆密码:test123456
## 平台简介
* 对前后端进行了大部分功能的封装,使用起来更加简洁,功能逻辑清晰,能快速上手学习,并用在生产中。无需过高的建设、生产和维护成本以及各种沉默成本和试错成本。
* 成熟的数据处理及审批流程规则引擎: 项目针对数据处理和审批流程使用了可视化编辑,简化开发及配置,使业务更快的完成交付。
* 前端采用VUE3.0+ TypeScript + vite3 + Element-plus:[PandaUI](https://gitee.com/XM-GO/PandaUi),适配手机、平板、pc 内置多种ui功能减少开发量。
* 高效率的开发,使用代码生成器可以一键生成前后端代码,可在线预览代码,减少代码开发量。
* 完善的权限认证系统:完善的权限认证系统,包含,菜单按钮权限,接口权限,部门权限,角色权限等等。
* 内置数据库连接池:项目支持同时存在多个主流的SQL及NOSQL数据库( MySQL / MSSQL / Postgres / SQLite3 / Oracle / Redis / MongoDB)连接,并设置有连接池以提升数据存取效率及优化系统负载。
## 功能特性
* 老旧系统翻新 - 对于没法用、不好用、有隐患的老破旧系统进行快速的翻新升级,使其重新获得可持续建设和维护以提升系统稳定性和业务可靠性。
* 数据和业务孤岛 - 对于系统不统一,做个报表开三五十个页面才能做好,甚至有部分数据还需要去设备面前抄写的情况。使用本系统可整合所有已有系统的功能及数据,实现一位员工、一个账户、一套系统、统一分析、统一管理。
* 数据真实性和及时性 - 自动化实时采集,实时分析,实时预警。有效的避免了人为因素导致的隐患忽视和报告的滞后性所产生不必要和不可挽回的损失。
* 更轻松的管理 - 无论是管理订单、人员、事务或是资金、资产和供应链,一套系统,全流程打通。精细化到能看到的最小力度,从此不再等待逐一汇报,想看见的,现在就能看见。
* 提升企业信息化数字化综合能力 - 我们除了提供开放式的技术合作,更提供人才的一对一培养方案,让企业不仅立即拥有最新技术,还能拥有掌握技术随叫随到的工程师为企业保驾护航。同时我们还能协助申请定制部分的数字产权证书,让企业从内而外的拥有自主可控的全流程解决方案。
* 长期支持保证 - 我们最长可提供20年的服务续约保障,同时相关技术及代码的公共部分均有社区开源版本,企业可放心的应用于各个生产环节的数据互通和流程管理,从此不用再担心卡脖子的问题。
## 系统说明

## 基础功能 (✅ 已上线 🧪 测试中 🚧 开发中 )
- ✅ 全自动HTTPS域名证书管理 - 申请 / 验证 / 续签
- 🧪 全自动公网IPv4地址HTTPS证书管理 - 申请 / 验证 / 续签
- ✅ 数字证书支持 X25519 / P265 / ECDH / SM2DH | 签发 / 解析 / 验证
- ✅ 国密数字证书支持 - SM2 | 签发 / 加解密 / 解析 / 验证
- ✅ Http(s)代理 - 支持多用户
- ✅ HTTP服务 - 静态托管 / 文件传输 / 函数调用
- ✅ 内置缓存库 - LRU-TTL(内存)- 导入 / 导出
- ✅ 异步多线程 - 支持同容器多线程 / 支持跨容器多线程
- ✅ SMTP邮件发送 / IMAP邮件接收
- ✅ 系统环境获取 / 文件操作
- ✅ HTTP请求解析 / 响应 / 支持数据流
- ✅ TOTP/HOTP 2FA生成 / 核验
- 🧪 异步定时支持 setTimeout / setInterval / clearInterval / clearAllInterval
- ✅ TCP / UDP 监听 / 连接 / 接收 / 发送
- ✅ MySQL / MSSQL / Postgres / SQLite3 / Redis / Oracle 数据库支持 - 支持数据库连接池
- ✅ 支持JS库Require - 本地 / 远程
- ✅ 内置转码支持 - String / Bytes - ToBase58、ToBase64、ToString、ToBytes、ToHEX
- ✅ 内置加解密库 - crypto 支持AES(CBC、ECB、CFB、CTR、GCM、OFB)、RC4 、SM4、RSA、ECDSA、X25519、SM2
- ✅ 内置加密哈希库 - crypto 支持SHA1、SHA224、SHA256、SHA384、SHA512、MD5、Blake2b、Blake2s、SM3、HMAC-MD5、HMAC-SHA1、HMAC-SHA256、HMAC-SHA512
- ✅ 内置压缩库 - zlib 支持GZIP、DEFLATE、INFLATE、BROTLI
- ✅ 系统SHELL调用 - CMD(windows) / SH (other)
- ✅ 内置WebSocket服务 - 客户端 / 服务端
- ✅ 内置SSE服务 - 客户端 / 服务端
- 🚧 xMagic系统业务模块:
- 用户管理 ✅
- 文件管理 🚧
- 数据大屏 🚧
- 数据应用 ✅
- 函数应用 ✅
- 页面管理 ✅
- 缓存管理 ✅
- 身份权限(角色) 🚧
- 菜单管理 ✅
- 字典管理 ✅
- 数据源管理 🚧
- 部门管理 ✅
- 配置参数管理 ✅
---
前端工程结构
---
```
├── src
│ ├── api # Api ajax 等
│ ├── assets # 本地静态资源
│ ├── i18n # 国际化
│ ├── components # 业务通用组件
│ ├── layout # layout
│ ├── theme # css主题样式
│ ├── router # Vue-Router
│ ├── store # Vuex
│ ├── utils # 工具库
│ ├── views # 业务页面入口和常用模板
│ ├── App.vue # Vue 模板入口
│ └── main.ts # Vue 入口 TS
├── README.md
└── package.json
```
## 后端工程结构
```
├── app
│ ├── console # 前端业务模块 - 调试终端
│ ├── login # 前端业务模块 - 登陆界面
│ ├── panel # 前端业务模块 - 开发面板
│ └── other # 前端业务模块 - 其它业务(可自定义添加)
├── api
│ ├── api # 后端接口模块 - 接口管理
│ ├── case # 后端接口模块 - 代码生成式SQL保留的例子
│ ├── config # 后端接口模块 - 系统配置
│ ├── core # 后端接口模块 - 内核控制
│ ├── dict # 后端接口模块 - 数据字典
│ ├── dm # 后端接口模块 - 数据应用
│ ├── event # 后端接口模块 - 事件订阅
│ ├── f # 后端接口模块 - 函数应用
│ ├── files # 后端接口模块 - 文件管理
│ ├── lib # 后端接口模块 - 公共代码(库)
│ ├── log # 后端接口模块 - 系统日志
│ ├── menu # 后端接口模块 - 系统菜单
│ ├── open # 后端接口模块 - 开放接口
│ ├── upload # 后端接口模块 - 文件上传
│ ├── user # 后端接口模块 - 用户模块
│ └── utils # 后端接口模块 - 辅助工具
├── core.js # WEBSERVICE - 核心文件
├── global.js # WEBSERVICE - 全局声明
├── ws.js # WEBSOCKET - 核心文件
├── init.js # WEBSOCKET - 初始化文件
├── main.js # 后端服务入口文件(启动文件)
└── README.md
```
# 附加服务
sse: your_domain/sse
websocket: your_domain/ws
http/s_proxy: user:pass@your_domain
web_terminal: your_domain/app/console?code=password
SSE服务通过路径/sse进行订阅,可通过token头、cookie、authorizetion-barze头、url参数传入token实现指定会话ID,websocket服务的使用方法同上。
`sse.send(session_id,'event',data)` 进行消息推送(event参数可选)
`sse.broadcast('event',data)` 广播消息(event参数可选)
`sse.has(session_id)` 判断会话是否存在
`ws.send(session_id,data)` 进行消息推送
`ws.broadcast(data)` 广播消息
`ws.has(session_id)` 判断会话是否存在
websocket服务的使用方式同上,区别是使用`ws`,例如 `ws.has(session_id)`,另外所有的客户端发送的请求都会集中到`ws.js`中,因此无论是分流还是直接处理,逻辑应当在`ws.js`中。
http/s代理服务,使用时需要先在系统内注册用户,之后便可通过注册的账户密码使用http/s代理。
`runtime.proxy.register('user','pass')`注册账户密码
`runtime.proxy.has("username")` 查询用户是否存在
`runtime.proxy.remove("username")` 移除用户 "username"
web_terminal服务,使用时需要先在系统内注册用户,之后便可通过web_terminal使用调试终端。
`runtime.xterm.register('token')`注册密钥“token”为准入密钥
`runtime.xterm.has("token")` 查询密钥“token”是否存在
`runtime.xterm.remove("token")` 移除密钥 "token"