What framework is CabloyJS

CabloyJS is a node. js full stack framework with workflow engine, a low code development platform for developers, and a flexible customization PAAS platform with both low code out of the box and professional code

Every feature built into CabloyJS has been carefully tuned for seamless transition from out-of-the-box to flexible customization, including: Role system, user authentication, menu permissions, data permissions, form rendering, form validation, workflow engine, dictionary, dashboard, online push, page theme, multi-language internationalization, CMS rendering engine, wechat interface, enterprise wechat interface, nail interface, etc

Technology stack

scenario Technology stack
The front end vue2 + framework7
The back-end koa2 + egg2
The database mysql
Distributed (cache/queue/message) Redis, BullMQ, Websocket
Markdown rich text editing Prosemirror

The online demo

Please use PC and Mobile respectively to visit the demo site, experience the unique PC = Mobile +pad adaptive style, true cross-multi-terminal architecture, a set of code for both PC and Mobile

scenario Link/QR code
PC test.cabloy.com/
Mobile terminal
Account type The name of the password
The administrator admin 123456
The average user tom 123456
The average user jane 123456

The introduction

Who can use JavaScript to write applications, will eventually use JavaScript to write | Atwood’s law

At present, most of the frameworks related to NodeJS in the market basically position NodeJS at the tool layer, aggregation layer, intermediate layer, and proxy layer, and rarely carry out in-depth research at the business level, which is considered to be the domain of JAVA and NodeJS is not suitable for it. This trend of thought clearly contradicts Atwood’s law

If you want a different NodeJS full stack development experience, be sure to try CabloyJS full stack open source framework with workflow engine. In order to improve the development efficiency and development experience at the business level, CabloyJS provides a large number of practical tools and components in both the front-end and back-end

What real world pain points does CabloyJS solve?

There are currently (as of January 2022) several pain points in NodeJS development:

1. How can the middle and background management system support the mobile terminal more gracefully?

With the popularization and upgrading of mobile terminals, a large number of business scenarios need the support of mobile terminals. For example, the management needs to check statistics and review business documents through mobile phones. O&m personnel use mobile phones to remotely check the server status and adjust and optimize it

As we know, most of the middle and background management systems on the market are preferentially adapted to THE PC end, but the mobile end experience is not good, in the barely usable, but not good to use stage

In addition, most XXX Admin frameworks and middle and back office management frameworks are essentially code templates. For specific development projects, write code directly in the code template. In this way, although the modification is very direct, it is not conducive to the continuous upgrade and optimization of the template; Nor is it conducive to continuous precipitation and migration of business code (to other projects). Therefore, when a code template is downloaded from the repository, it is modified by a third, added by a third, and deleted by a third, and is henceforth insulated from subsequent upgrades of the code template

2. There is no good workflow engine in the NodeJS world!

CRUD alone is easily implemented by most programming language development frameworks and should not be a core advantage of NodeJS development business systems. The workflow engine is a core component of NodeJS development in the business domain

3. Drag and drop low code platforms have become a weak point!

Most business forms are not just a simple combination of some fields and add, delete, change and check. Different businesses have their own unique business demands, which often require customization of front-end interface and back-end logic. Drag-and-drop, low-code platforms don’t have enough tools for business people to customize, and don’t have enough mechanisms for developers to develop

Many drag-and-drop, low-code platforms realize this and offer official pre-configured suite solutions for different business scenarios, which also puts business people and developers in the awkward position of being useless and useless

CabloyJS highlights

Based on the above analysis, CabloyJS achieves the following three highlights of function and architecture

1. Three highlights of function

  1. Adaptive layout: PC = Mobile + Pad

CabloyJS pioneered the adaptive layout mechanism of PC = Mobile + pad: only a set of code is needed to achieve the native effect on mobile, while seamlessly bringing the control experience and development mode on mobile to PC

Please open the demo link on PC and mobile: test.cabloy.com/ to see the unique adaptive mechanism

  1. Automatic form rendering and data validation engine based on JSON Schema

By defining the JSON Schema in one place, you can support both automatic form rendering on the front end and data validation on the back end, making it both out-of-the-box and customizable

  1. Built-in NodeJS workflow engine

CabloyJS takes advantage of the flexibility of the JS language and the convenience of the JSON format to provide a NodeJS workflow engine that is far simpler and easier to use than Activiti in the JAVA domain

For example, we generally only know how to use the active nodes and boundary events provided in Activiti, but have little way to understand how to develop custom active nodes and custom boundary events. Because of Activiti’s complex architecture, most people won’t even try to read the source code. However, the workflow engine provided by CabloyJS can easily customize all workflow elements, and the source code is clear and easy to learn

2. Three highlights of the architecture

As a low code development platform for developers, in order to combine low code out of the box with flexible customization of professional code, CabloyJS mainly makes the following points in the architecture level:

  1. Modular development systems are isolated from modules

In order to satisfy the large business system development demands CabloyJS thinking planning system architecture of module, to business functions (such as the application for business trip, will be related to the business functions of the front-end components with the back-end logic group as a business module, which is conducive to business functions of cohesion and reuse, and conducive to team division of labor in business

In addition, the pages, data, logic, routing, configuration and other elements within the service module are namespace isolated to avoid variable contamination and conflict between modules. In other words, when we name a resource in our own business module, we don’t have to worry about whether other business modules have resources with the same name, thereby reducing the mental burden

  1. Native distributed architecture

EggJS is positioned as the framework of the framework. Based on EggJS, CabloyJS extends a set of new features suitable for business scenarios by using the custom Loader mechanism

For example, the original Worker + Agent process model of EggJS is very convenient for a single machine. However, in the face of multi-machine cluster, especially docker-based cluster deployment, Agent process loses its use. More importantly, if you start your development on an Agent basis, it will be difficult to make a smooth transition to a distributed scenario. Therefore, The CabloyJS backend uses Redis to start the native distributed architecture design from the bottom of the framework, and derived a series of distributed development components such as Broadcast, Queue, Schedule, Startup, which is convenient for us to carry out distributed development from the beginning. Therefore, you can easily expand the cluster when the system is overloaded. For details, see Broadcast, Queue, Schedule, Startup

  1. Front and rear end separation, full scene development

The architecture is designed to separate the front and back ends, enabling rapid development of services in all scenarios

scenario The front end The back-end
PC: Web CabloyJS front-end CabloyJS backend
PC: Exe CabloyJS front end + Electron CabloyJS backend
Mobile: IOS CabloyJS front-end + Cordova CabloyJS backend
Mobile: Android CabloyJS front-end + Cordova CabloyJS backend
Wechat official account CabloyJS front-end + wechat API CabloyJS backend
Enterprise WeChat CabloyJS front-end + enterprise wechat API CabloyJS backend
nailing CabloyJS front-end + pin API CabloyJS backend
Slack CabloyJS front-end + Slack API CabloyJS backend
Small programs: wechat, Alipay, etc Uni-app + CabloyJS front-end SDK CabloyJS backend
  • The back-end: Because of the complete front and back end separation design, only a set of CabloyJS back-end code can be developed
  • The front end: All scenarios that can be based on H5 need only develop a set of CabloyJS front-end code
  • Small program: Provides CabloyJS front-end SDK so uni-App can easily interconnect with CabloyJS back-end code

What systems can CabloyJS develop

  1. You can developMulti-tenant SAAS business system
  2. The front and rear ends can be developed separatelyBackground business management system, such as OA, CRM, ERP, e-commerce, etc
  3. You can developJAMStackThe architecture of theCMS content management system, support SEO optimization, such as blogs, technical documents, communities, knowledge stores, and so on
  4. It can be developed firstBackground business management system, and then extended developmentCMS content management system; Or you can go the other way and develop firstCMS content management system, and then extended developmentBackground business management system
  5. Can be achieved byCordovaDevelop all kinds of App applications, supporting IOS and Android
  6. Can be achieved byElectronDeveloping desktop Applications
  7. Can develop wechat public number, enterprise wechat, nail nail, and other third-party platform applications, solveInformation islandThe problem of
  8. Can I do forUniapp appletDevelop back-end API interfaces

A formal system developed by CabloyJS

Site type Links to sites
Background Management System (PC layout) admin.cabloy.com
Background Management System (Mobile layout)
blog zhennann.com
Technical Documentation (English) cabloy.com/index.html
Technical Documentation (Chinese) Cabloy.com/zh-cn/index…
Community (English) community.cabloy.com/index.html
Community (Chinese) Community.cabloy.com/zh-cn/index…
Courses (English) course.cabloy.com/index.html
Courses (Chinese) Course.cabloy.com/zh-cn/index…
Cabloy Store store.cabloy.com/index.html
Cabloy Shop (Chinese) Store.cabloy.com/zh-cn/index…

The development of CabloyJS

CabloyJS has been under development since 2016 and has gone through two stages:

1. Stage 1: EggBornJS

The core focus of EggBornJS is the isolation of modular architecture and modules to achieve a complete full-stack development framework

For example, the egg-born-front module is the core module of the front end of the framework, the egg-born-backend module is the core module of the backend of the framework, and the egg-born module is the command line tool of the framework, which is used to create the skeleton of the project

Is this why all business modules are prefixed with egg-born-module-

2. Stage 2: CabloyJS

EggBornJS is just a basic full-stack development framework. In order to support rapid business development, there are many business-related supporting features, such as workflow engine, user management, role management, permission management, menu management, parameter setting management, form verification, login mechanism, and so on. Especially in the scenario where the front and back ends are separated, the requirement for permission management rises to a higher level

Based on EggBornJS, CabloyJS provides a set of core business modules, so as to realize a series of business support features, and combine these features organically to form a complete and flexible upper ecological architecture, so as to support specific business development process

With EggBornJS, you can reuse not only components, but also business modules

With CabloyJS, you can quickly develop all kinds of business applications

belief

Who can use JavaScript to write applications, will eventually use JavaScript to write | Atwood’s law

We believe that deep explorers of Javascript will be inspired by this quote and work together to contribute to the Javascript ecosystem and build a more prosperous application ecosystem

CabloyJS is an exploration of this famous saying. You are welcome to join the CabloyJS community to promote the prosperity and application of Javascript

Origin of name

1. EggBorn

The origin of the name is relatively simple, as Egg(back-end framework) is the result of EggBorn. There is a cartoon called “Tianshu strange tan”, the adorable Lord inside is called “eggs”, I like to see (accidentally exposed the age 😅)

2. Cabloy

Cabloy is a magical spell from the Smurfs that has magical effects when spelled correctly. Likewise, CabloyJS is magic about chemistry, based on modular combinations with biochemical reactions, you’ll achieve anything you want

License

MIT