GithubHelp home page GithubHelp logo

yaoapp / yao Goto Github PK

View Code? Open in Web Editor NEW
7.0K 111.0 646.0 15.91 MB

:rocket: A performance app engine to create web services and applications in minutes.Suitable for AI, IoT, Industrial Internet, Connected Vehicles, DevOps, Energy, Finance and many other use-cases.

Home Page: https://yaoapps.com

License: Apache License 2.0

JavaScript 0.01% Makefile 0.92% Go 98.69% HTML 0.03% Dockerfile 0.30% Shell 0.05%
go golang low-code framework self-hosted dashboard api cloud flow-based-programming webserver

yao's Introduction

YAO App Engine

Website · Producthunt · Twitter

Intro.mp4

中文介绍

YAO is an open-source application engine, written in Golang, in the form of a command-line tool that can be downloaded and used immediately. It is suitable for developing business systems, website/APP API, admin panel, self-built low-code platforms, etc.

YAO adopts a flow-based programming model to implement various functions by writing YAO DSL (Logical Description in JSON format) or using JavaScript to write processes. The YAO DSL can be written in several ways:

  1. Purely hand-written

  2. Use automated scripts to generate contextual logic

  3. Use the visual editor to create by "drag and drop"

Documentation: https://yaoapps.com/en-US/doc

Latest Version download and installation (Recommended)

https://github.com/YaoApp/xgen-dev-app

Demo

Applications developed with YAO

Application Description Repository
yaoapp/yao-examples Yao Examples https://github.com/YaoApp/yao-examples
yaoapp/yao-knowledge A knowledge base application https://github.com/YaoApp/yao-knowledge
yaoapp/xgen-dev-app A demo application https://github.com/YaoApp/xgen-dev-app
yaoapp/demo-project A demo application for project management https://github.com/yaoapp/demo-project
yaoapp/demo-finance A demo application for financial management https://github.com/yaoapp/demo-finance
yaoapp/demo-plm A demo application for production project management https://github.com/yaoapp/demo-plm

Introduce

Yao allows developers to create web services by processes. Yao is a app engine that creates a database model, writes API services, and describes dashboard interface just by JSON for web & hardware, and 10x productivity.

Yao is based on the flow-based programming idea, developed in the Go language, and supports multiple ways to expand the data stream processor. This makes Yao extremely versatile, which can replace programming languages ​​in most scenarios, and is 10 times more efficient than traditional programming languages ​​in terms of reusability and coding efficiency; application performance and resource ratio Better than PHP, JAVA and other languages.

Yao has a built-in data management system. By writing JSON to describe the interface layout, 90% of the common interface interaction functions can be realized. It is especially suitable for quickly making various management background, CRM, ERP and other internal enterprise systems. Special interactive functions can also be implemented by writing extension components or HTML pages. The built-in management system is not coupled with Yao, and any front-end technologies such as VUE and React can be used to implement the management interface.

Install

Latest Version download and installation:

https://github.com/YaoApp/xgen-dev-app/blob/main/README.md

Getting Started

See documentation for more details.

Create a blank project

Create a new application directory, enter the application directory, run the yao start command, and start the installation.

mkdir -p /data/app # create project directory
cd /data/app # Enter the project directory
yao start # Start installation

Default Account

About Yao

Yao's name is derived from the Chinese character 爻 (yáo), the basic symbol that makes up the Eight Trigrams. The Eight Trigrams is a symbol system created by the ancient god Fuxi after observing and summarizing the laws of nature, which can refer to everything. Yao has two states of yin and yang, like 0 and 1. The transformation of yin and yang of Yao drives the replacement of Eight Trigrams, so as to summarize and record the development law of things.

yao's People

Contributors

almas1992 avatar imlida avatar matrixage avatar qjautumn avatar thlz998 avatar trheyi avatar wangyuheng avatar wwsheng009 avatar yflau avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yao's Issues

点个赞

点个赞 低代码的解决方案

请问以 json 作为 DSL,对服务端和客户端的 debug 是否友好?

感谢作者提供这样的框架。
试运行 demo crm 后,发现:

  1. 数据库兼容问题: demo 的数据驱动是 mysql ,改为 sqlite 后,发现兼容问题,修改下也可以跑起来。
  2. debug 问题:json 对 debug 中不友好,不能 debug 出具体位置,靠经验猜。

想法:json 作为 DSL 使用,如果运行前没有格式和 DSL 关键字检测和运行时没有详细的报错,会不会给 debug 带来极大的困难?
请问作者在实际项目中,是怎么处理以上问题的?

Remote database

After taking a look at the documentation, I did not find a way to interact with the remote database, is that any method to deal with that or would it be available in the future?

yao的一些扩展性疑问和思考

各位好。
我研究学习yao大概一周了,有一些问题,想探讨一下。

1,yao 是否有 发送http请求 的处理器?
2,yao 是否yao是否支持发送grpc请求?
总结问题一:yao 是否会支持各种协议的通信?不仅仅是暴露接口供外部访问,也可以在flow或script里去访问其他接口?

3,yao 能否接入redis?
4,yao能否接入MongoDB?
5,yao能否绘制导出Excel表格?
总结问题二:yao 能否接入各种各样的第三方服务和中间件,像对象存储,像kafka,等等等等

进一步思考:go语言是都支持以上这些能力的,也就是说在技术上,yao可以实现以上所有功能,只需要维护者更新迭代。但是,像go语言的各种能力,也都是广大开发者们开发出来的库去支撑的,不是一个项目的维护者们能更新迭代维护好的。yao的“处理器”概念,我的体验非常好,但是把yao提供给更多的开发者使用,那一定会需要更多的功能,满足千变万化的需求,那可扩展性就会非常有必要,所以,yao能否设计一套库的引用的方法?最好还能保持yao的设计理念,能简单快速与第三方服务或包对接。

折中思考:yao是以go语音为基础开发的,yao又是开源的,所以,博主是否可以出一份简单的开发指导教程,指导一下go语言开发者,如何在yao的源码里集成其他服务,然后生成 处理器,这样后,开发者们就可以通过源码自己开发和编译,产生符合自己需要的系统级处理器了?

以上。

补充:额,发完这个issues,我才看到编写第三方插件
这个章节,我再研究研究编写自己的插件看看

thanks and some suggestion

  • I used some headless cms, first strapi then directus, which provides an instant API wrapper for SQL databases and an intuitive Admin App for non-technical users to manage that content. You can see yao share some common features like headless cms.

  • I am a big fun of golang and hope there are some popular headless cms projects in golang but not found. I am glad yao provide similiar ability. Maybe you can add some Comparison to headless cms.

  • Do you welcome pr? If yes could you open some issue with tags like 'help wanted'. And maybe some tech design docs to help contributors get started.

功能疑问:Webhook 通知 以及 API验证

详细阅读了一下文档,但是目前有一些疑问不知道我理解的是否正确。

  1. 目前没有看到支持API接口的验证,这个是否需要自行放到 Process里面去做?
  2. 如上,假如当数据被修改时发送webhook通知,这个是否也是需要自行放到 Flows里面进行操作

rockylinux下无法安装执行

环境:rockylinux 8.5 64bit
执行命令:curl -fsSL https://website.yaoapps.com/install.sh | bash
执行结果信息如下:

Installed: /usr/local/bin/yao
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x63 pc=0x7f09f030cbd0]

runtime stack:
runtime.throw({0x2594bdf, 0x7f09f16327c0})
	/opt/hostedtoolcache/go/1.17.7/x64/src/runtime/panic.go:1198 +0x71
runtime.sigpanic()
	/opt/hostedtoolcache/go/1.17.7/x64/src/runtime/signal_unix.go:719 +0x396

goroutine 36 [syscall]:
runtime.cgocall(0x11ca250, 0xc000133d90)
	/opt/hostedtoolcache/go/1.17.7/x64/src/runtime/cgocall.go:156 +0x5c fp=0xc000133d68 sp=0xc000133d30 pc=0x41263c
net._C2func_getaddrinfo(0xc000116160, 0x0, 0xc000059770, 0xc000114028)
	_cgo_gotypes.go:90 +0x56 fp=0xc000133d90 sp=0xc000133d68 pc=0x56ae76
net.cgoLookupIPCNAME.func1({0xc000116160, 0x0, 0x0}, 0x25634e0, 0xc000133e50)
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/cgo_unix.go:163 +0x9f fp=0xc000133de8 sp=0xc000133d90 pc=0x56cbbf
net.cgoLookupIPCNAME({0x25521a2, 0x3}, {0x25634e0, 0x0})
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/cgo_unix.go:163 +0x16d fp=0xc000133f38 sp=0xc000133de8 pc=0x56c40d
net.cgoIPLookup(0x45c7c30, {0x25521a2, 0xc000491580}, {0x25634e0, 0x0})
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/cgo_unix.go:220 +0x3b fp=0xc000133fa8 sp=0xc000133f38 pc=0x56cc7b
net.cgoLookupIP·dwrap·25()
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/cgo_unix.go:230 +0x36 fp=0xc000133fe0 sp=0xc000133fa8 pc=0x56d0f6
runtime.goexit()
	/opt/hostedtoolcache/go/1.17.7/x64/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc000133fe8 sp=0xc000133fe0 pc=0x475361
created by net.cgoLookupIP
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/cgo_unix.go:230 +0x125

goroutine 1 [select, locked to thread]:
net.(*Resolver).lookupIPAddr(0x45c7c20, {0x2d3a090, 0xc0000480c0}, {0x25521a2, 0xc0005a3aa0}, {0x25634e0, 0x9})
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/lookup.go:302 +0x5c7
net.(*Resolver).internetAddrList(0xc000145a78, {0x2d3a090, 0xc0000480c0}, {0x25521a2, 0x3}, {0x25634e0, 0xb})
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/ipsock.go:288 +0x67a
net.ResolveTCPAddr({0x25521a2, 0x2a}, {0x25634e0, 0xb})
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/tcpsock.go:77 +0xaf
github.com/yaoapp/yao/network.FreePort()
	/home/runner/work/yao/yao/network/ip.go:44 +0x65
github.com/yaoapp/yao/share.init.0()
	/home/runner/work/yao/yao/share/session.go:27 +0x19

goroutine 7 [select]:
net.cgoLookupIP({0x2d3a058, 0xc0003e0100}, {0x25521a2, 0x9}, {0x25634e0, 0x0})
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/cgo_unix.go:231 +0x1b7
net.(*Resolver).lookupIP(0x45c7c20, {0x2d3a058, 0xc0003e0100}, {0x25521a2, 0x3}, {0x25634e0, 0x9})
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/lookup_unix.go:97 +0x128
net.glob..func1({0x2d3a058, 0xc0003e0100}, 0x0, {0x25521a2, 0x0}, {0x25634e0, 0x0})
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/hook.go:23 +0x3d
net.(*Resolver).lookupIPAddr.func1()
	/opt/hostedtoolcache/go/1.17.7/x64/src/net/lookup.go:296 +0x9f
internal/singleflight.(*Group).doCall(0x45c7c30, 0xc0004a6c80, {0xc000491580, 0xd}, 0x0)
	/opt/hostedtoolcache/go/1.17.7/x64/src/internal/singleflight/singleflight.go:95 +0x3b
created by internal/singleflight.(*Group).DoChan
	/opt/hostedtoolcache/go/1.17.7/x64/src/internal/singleflight/singleflight.go:88 +0x2f1
Version: 
DONE

建议增加根据模型数据自动生成表格json的功能

因为我们的大部分表格数据都是来源于数据库模型,用户一般只做少量修改调整,我们已经有了模型的json,那么应该可以自动生成对应的表格展示json,然后自I行根据需要修改即可,避免重复代码。

中间件,如何自定义实现?

image

文档的 接口 章节里 有 guard 引用中间件的字段,目前通过文档只看到了 "guard": "bearer-jwt" 和"guard": "-"这两种,那中间件如何开发配置?这一章节的文档有么?

编写第三方插件-这个插件都有什么要求?

1,是否只可以用go语音编写?
2,对插件的格式和使用方法都有什么要求?是否要求必须为 .os后缀?
3,咱们是否可以建一个第三方插件库?由大家一起来提供好用可靠的插件?

mysql 只支持 8 ?

试了下 crm demo ,似乎用了 json_table 的一些方法,

没法用 sqlite3 引擎,好像也无法兼容 mariadb ?

看能否兼容一下,如果数据库要指定新版本,使用门槛一下上升了不少~

Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(`industries`, '$[*]' columns (`F1` VARCHAR(255) path '$') ) AS `__JSON_T1` g...' at line 1
/Users/runner/work/yao/xun/utils/utils.go:22 (0x4a42364)
/Users/runner/work/yao/xun/dbal/query/query.go:53 (0x4a42340)
/Users/runner/work/yao/gou/query/gou/query.go:267 (0x4d4bd68)
/Users/runner/work/yao/gou/query/gou/query.go:162 (0x4d4b137)
/Users/runner/work/yao/gou/flow.process.go:91 (0x4b19cce)
/Users/runner/work/yao/gou/flow.process.go:77 (0x4b19be7)

换到 mariadb 10.6 + 后(支持 json_table), 但提示:

{"message":"Table:service; 尚未加载","code":400,"context":null}
/Users/runner/work/yao/kun/exception/exception.go:111 (0x4d5ee29)
/Users/runner/work/yao/yao/table/table.go:93 (0x4d5edf3)
/Users/runner/work/yao/yao/table/process.go:35 (0x4d5a536)
/Users/runner/work/yao/gou/process.go:19 (0x4b111cf)
/Users/runner/work/yao/gou/api.http.go:94 (0x4b111c6)

能否支持数据字典,权限控制,自定义界面样式?

通过初步学习,对这个框架非常感兴趣,系统结构很简单,很容易理解,具有基本的自动化功能,又可以灵活定制功能,设计的非常好。
对系统框架有了一个简单了解,目前没有发现数据字典,用户权限控制等功能。这些属于常用,通用的比较重要的功能,作为框架用户没有必要重复实现这些功能,建议在框架中集成较为灵活的相关功能。
同时,也希望能够支持用户自行修改页面样式,包括登录,后台颜色,布局等基本调整。
另外,希望加入对常见的中间件服务的支持。
++++++++++++++++++++++++++++++++++++++++++
另外,请教一下,数据流和处理器的功能是否类似,数据流也可以认为是一种处理器?可以理解为处理器是小粒度的功能实现,比如读取一个列表等,数据流是对处理器进行组合实现更加复杂的处理器,比如:处理登录、初始化、查询列表等多个功能,用户调用这个数据流即可实现这一系列逻辑。当然,数据流的功能是不是也可以在处理器里通过js来实现?

希望早日实现 JSON 的操作全部可视化 奥里给

未来
我们会在未来的日子里推出可视化操作的服务,将对 JSON 的操作全部可视化,这样能进一步降低开发门槛,让小白用户看着开发文档也能轻松开发企业级后台应用。我们也在考虑对一些核心模块进行重构,以此来让使用 JSON 的开发者和使用可视化界面的开发者拥有同等的便利。

Endless loop when launching the Dashboard in local

Hi, I followed the instruction in Getting started and managed to start the server with yao start, but met endless loop when I hit the dashboard URL http://127.0.0.1:5099/xiang/login/admin in chrome, I'm using the MacOS and no error logs in both server side and Chrome console, just have a screenshot here, it's refreshing in the login page again and again, thanks:
Chrome version: Version 99.0.4844.51 (Official Build) (x86_64)
image

无法在页面上进行低代码

无法在页面上进行低代码,现在必须通过把json描述在服务器放到指定目录,执行指令才可生成数据和接口,页面吗。
是否后续支持翔其他低代码平台一样,在页面进行数据模型的描述,就可生成接口和页面

编写第三方插件-是否可以引用.env文件里的变量

比如我要自己实现一个redis处理器,需要将ip端口等信息提取到配置文件里
我可以直接在.env里添加,然后在我自己写的代码里引用么?可以的话,要怎么引用?
或者说我要自己写一套文件读取方法,去读取自定义的配置文件?

希望 文档"章节"的说明里可以补充参数的测试指令

以文档中最后的 “完整示例”为例,里面涉及到的参数格式有 $query :params $param $payload,请问这些形式的参数,都要如何填写请求参数。希望可以在“b变量”表格后面补充一列,举例一下这些形式的参数都是如何传递的
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.