YAO programming basics

The YAO application engine is an application development and runtime tool for professional developers. If you are familiar with JavaScript/HTML/CSS and basic database query, you can realize most of the functions.

To read the basic documents, you need to have basic programming experience and be familiar with basic database operations.

To read advanced documents, you need to understand RESTFul API, be proficient in JavaScript scripting language, understand HTML/CSS, etc.

To read expert documentation, you need to master the Go programming language and be familiar with the Linux operating system.

The following table shows the ability requirements for developers to develop different types of applications using YAO:

Building AppsLevelsDatabasesRESTFul APIJavaScriptHTML/CSS/VUE/React/OtherGolang
Simple management backgroundBasicsFamiliar with basic queries----
Simple business systemBasicsFamiliar with basic queriesCan be connectedUnderstanding--
C-side page/applicationBasic-DockingUnderstandingProficient-
Complex business systemAdvancedAbility to design data tableDesignableMasterUnderstand-
Complex management backgroundAdvancedData table design abilityDesignableMasterUnderstand-
Self-built low-code platformExpertCapable of data table designDesignableMasteryProficient-
Participate in code contributionExpertHave data table design abilityDesignableMasterProficientMaster

Basic Concepts

YAO DSL

Domain-specific language DSL (domain specific language), is a computer language dedicated to a specific application domain.

According to business characteristics, YAO defines a set of YAO DSL to describe functional modules such as data structure, data flow, API interface, concurrent tasks, scheduled tasks, and Socket services. These functional modules are defined as Widgets. YAO DSL and YAO Widget support the definition of extensions according to their own business characteristics, which makes it easier to build a low-code platform based on YAO that meets their own business characteristics.

YAO DSL can be written in several ways:

  1. Write by hand
  2. Procedurally generated based on context logic
  3. Generate with a visual editor

This coding method can effectively improve productivity, reduce copy-paste error rates, and make it possible to write programs with programs.

We are also trying to connect AI with YAO to explore the possibility of fully automatic programming by AI "engineers".

YAO Widget

YAO has built-in multiple Widgets and XGEN interface engines, and implements various specific functions by writing DSL.

YAO has built-in Widgets, almost covering most of the common functions of application development.

Built-in WidgetFunction Description
modelData Structure Modeling
flowData logic arrangement
apiRESTFul API
tabletable CURD
chartdata chart
loginUser login
registerUser registration
taskConcurrent tasks
scheduleScheduled tasks
socketSocket
websocketWebSocket

View Widget Documentation

YAO Process

Yao is based on the flow-based programming idea, everything is a process. processes can be used in Widgets such as Flow, API, Table, Task, etc. In this way, various specific business logics can be implemented.

YAO has built-in a series of atomic operation processes, and also supports the use of JavaScript script extensions.

process TypeFunction Description
Application EngineEngine Related process
Data ModelData Atomic Operation process
Network RequestNetwork Request Atomic process
File HandlingFile I/O process
Session DataUser Session Count process
Encryption and decryptionEncryption and decryption algorithm process
ArraysArray Data processes
StringString Data process
Flow ControlData Flow Orchestration Flow Control process

[view process documentation](../Manual/Process/Application Engine)

relational database

A relational database is a database created on the basis of a relational model, and uses mathematical concepts and methods such as set algebra to process data in the database. Various entities in the real world and various connections between entities are represented by relational models. The relational model was first proposed by Edgar Codd in 1970, and complies with Codd's Twelve Laws. Although there are some critics of this model today, it is still the traditional standard for data storage. Standard Data Query Language SQL is a relational database-based language that performs retrieval and manipulation of data in relational databases.

The relational model consists of three parts: relational data structure, relational operation set, and relational integrity constraints. Wikipedia link

Relational database versions supported by YAO

DatabaseVersionDescription
MySQL5.7.x
MySQL8.0.x
SQLite3.x
Postgres9.6Coming soon
Postgres14Coming soon

Web Server

The Web Server accepts requests through the HTTP protocol or HTTPS protocol, and responds according to the content requested by the client (browser). Wikipedia link

HTTP protocol

Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet Protocol Suite model for distributed, collaborative, hypermedia information systems. Wikipedia link

REST API

REST API, also known as RESTful API, is an application programming interface (API or Web API) that follows the REST architecture specification and supports interaction with RESTful web services. REST is an acronym for Representational State Transfer and was created by computer scientist Roy Fielding.

Wikipedia link

YAO programming basics

The YAO application engine is an application development and runtime tool for professional developers. If you are familiar with JavaScript/HTML/CSS and basic database query, you can realize most of the functions.

To read the basic documents, you need to have basic programming experience and be familiar with basic database operations.

To read advanced documents, you need to understand RESTFul API, be proficient in JavaScript scripting language, understand HTML/CSS, etc.

To read expert documentation, you need to master the Go programming language and be familiar with the Linux operating system.

The following table shows the ability requirements for developers to develop different types of applications using YAO:

Building AppsLevelsDatabasesRESTFul APIJavaScriptHTML/CSS/VUE/React/OtherGolang
Simple management backgroundBasicsFamiliar with basic queries----
Simple business systemBasicsFamiliar with basic queriesCan be connectedUnderstanding--
C-side page/applicationBasic-DockingUnderstandingProficient-
Complex business systemAdvancedAbility to design data tableDesignableMasterUnderstand-
Complex management backgroundAdvancedData table design abilityDesignableMasterUnderstand-
Self-built low-code platformExpertCapable of data table designDesignableMasteryProficient-
Participate in code contributionExpertHave data table design abilityDesignableMasterProficientMaster

Basic Concepts

YAO DSL

Domain-specific language DSL (domain specific language), is a computer language dedicated to a specific application domain.

According to business characteristics, YAO defines a set of YAO DSL to describe functional modules such as data structure, data flow, API interface, concurrent tasks, scheduled tasks, and Socket services. These functional modules are defined as Widgets. YAO DSL and YAO Widget support the definition of extensions according to their own business characteristics, which makes it easier to build a low-code platform based on YAO that meets their own business characteristics.

YAO DSL can be written in several ways:

  1. Write by hand
  2. Procedurally generated based on context logic
  3. Generate with a visual editor

This coding method can effectively improve productivity, reduce copy-paste error rates, and make it possible to write programs with programs.

We are also trying to connect AI with YAO to explore the possibility of fully automatic programming by AI "engineers".

YAO Widget

YAO has built-in multiple Widgets and XGEN interface engines, and implements various specific functions by writing DSL.

YAO has built-in Widgets, almost covering most of the common functions of application development.

Built-in WidgetFunction Description
modelData Structure Modeling
flowData logic arrangement
apiRESTFul API
tabletable CURD
chartdata chart
loginUser login
registerUser registration
taskConcurrent tasks
scheduleScheduled tasks
socketSocket
websocketWebSocket

View Widget Documentation

YAO Process

Yao is based on the flow-based programming idea, everything is a process. processes can be used in Widgets such as Flow, API, Table, Task, etc. In this way, various specific business logics can be implemented.

YAO has built-in a series of atomic operation processes, and also supports the use of JavaScript script extensions.

process TypeFunction Description
Application EngineEngine Related process
Data ModelData Atomic Operation process
Network RequestNetwork Request Atomic process
File HandlingFile I/O process
Session DataUser Session Count process
Encryption and decryptionEncryption and decryption algorithm process
ArraysArray Data processes
StringString Data process
Flow ControlData Flow Orchestration Flow Control process

[view process documentation](../Manual/Process/Application Engine)

relational database

A relational database is a database created on the basis of a relational model, and uses mathematical concepts and methods such as set algebra to process data in the database. Various entities in the real world and various connections between entities are represented by relational models. The relational model was first proposed by Edgar Codd in 1970, and complies with Codd's Twelve Laws. Although there are some critics of this model today, it is still the traditional standard for data storage. Standard Data Query Language SQL is a relational database-based language that performs retrieval and manipulation of data in relational databases.

The relational model consists of three parts: relational data structure, relational operation set, and relational integrity constraints. Wikipedia link

Relational database versions supported by YAO

DatabaseVersionDescription
MySQL5.7.x
MySQL8.0.x
SQLite3.x
Postgres9.6Coming soon
Postgres14Coming soon

Web Server

The Web Server accepts requests through the HTTP protocol or HTTPS protocol, and responds according to the content requested by the client (browser). Wikipedia link

HTTP protocol

Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet Protocol Suite model for distributed, collaborative, hypermedia information systems. Wikipedia link

REST API

REST API, also known as RESTful API, is an application programming interface (API or Web API) that follows the REST architecture specification and supports interaction with RESTful web services. REST is an acronym for Representational State Transfer and was created by computer scientist Roy Fielding.

Wikipedia link