Self-hosted service
biaogebusy/web-builder avatar
biaogebusy/web-builder

web-builder: an Angular low-code editor that stores pages as JSON and publishes through Drupal

AI 驱动 UI 生成和发布的低代码平台,基于TailwindCss,通过拖拽可视化快速构建现代化响应式UI、动态自定义组件、多主题、多语言的网站应用。AI-powered UI generation and publishing low code platform, built on TailwindCSS, enabling rapid drag-and-drop visual creation of modern responsive UIs, dynamic customizable components, multi-theme, and multi-language web applications.

584 stars98 forksTypeScriptAGPL-3.0

At a glance

What is it?
biaogebusy/web-builder is an AGPL-3.0 TypeScript editor for building Tailwind-based pages by drag and drop, with Drupal as a headless backend and a separate Pro tier for AI generation. Here is what the repository documents, what it leaves unsaid, and who should stay away.
Who is it for?
Adopt web-builder if your team already runs Drupal as a headless backend and wants Angular developers editing pages through a drag-and-drop canvas rather than through Twig templates. Do not adopt it if you need a hosted SaaS builder, if you cannot accept AGPL-3.0 obligations on a network-served derivative, or if you are unwilling to read Chinese documentation.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem is the Twig template, not the design tool

Most low-code page builders compete with Webflow on the design surface. web-builder competes with the Drupal theming workflow. The README describes it as the first open source low-code platform in China built on Drupal as a headless backend, and the feature table makes the target concrete: a layout builder with dynamic layouts, components whose data comes from either static values or an API source, a media library you can manage from the front end, and page history versions created whenever a submit, clear, or sample-load overwrites existing content. Those are the chores of a content-heavy Drupal site. A marketing team wants to reorder sections on a landing page without a ticket, and a Drupal developer does not want to hand that team raw paragraph entities and a Twig debug workflow. web-builder sits in that gap. The audience is narrower than the tagline suggests: it is for teams that have already chosen Drupal, not for teams choosing a stack from scratch. The repository also links a separate project, builder-cms, and a Taro plus NutUI mini program, xinshi-mini, whose pages and components are configured inside this builder. That tells you the intended deployment is a Chinese-market content operation serving both a website and a WeChat mini program from one editing surface.

Pages are JSON, and JSON is the unit of work

The mechanism the README exposes most clearly is the page format. The feature table lists copy JSON of an entire page, edit component data, copy a component's JSON, and drag components up and down to reorder them. A page is therefore an ordered tree of component objects, each carrying its own data, and the builder's job is to produce and mutate that tree. Data sources are declared per component: static data, or an API source. Layouts nest, which the video list confirms with a dedicated Layout nesting demo. Because the output is JSON rather than a compiled template, the same structure can be published to a Drupal-backed site and consumed by the mini program, and the translate-json skill in the companion web-builder-skills repository operates directly on that JSON, translating visible copy and prefixing internal links with the matching language code. Multi-theme preview and responsive preview are both described as views over the same component tree rather than as separate builds. The trade-off is that anything the component library does not model has to be expressed as a custom component, and the README's own description of those components is thin: it says dynamic custom components based on TailwindCSS and points at two Bilibili videos on API data sources and static data sources. There is no schema in the README. If you want to know how a component declares an API call, a cache policy, or an error state, the repository does not tell you.

Version compatibility is the first thing to check

The README publishes a compatibility matrix, and it is unusually specific. v12 and v11 both require Angular 20, Node 22 or later, and TypeScript 5.8 or later. v10 needs Angular 19 and Node 18. v9 pairs Angular 18 with TypeScript 5.4. The stack section names Angular 20 with standalone components, signals, zoneless change detection, and incremental hydration, plus Angular Material and TailwindCSS. Server-side rendering runs on @angular/ssr with Express. Forms are handled by ngx-formly, charts by Echarts, video by Video.js, calendars by FullCalendar, and rich text by tiptap. Animations come from two libraries with different roles: AOS for page scroll animations and GSAP for fine-grained custom animation. The recent release cadence is roughly quarterly: V11.4.0 in August 2026, V11.3.0 in May 2026, V11.2.2 in March 2026. That cadence matters if you pin a version, because the matrix suggests each major of the builder tracks a specific Angular major. Upgrading the builder is not a patch-level operation; it is an Angular upgrade with the SSR and Material churn that implies. Nothing in the supplied material states how long a given builder version receives fixes, so treat the matrix as a compatibility statement rather than a support policy.

Getting it running: what the repository actually gives you

The README does not include a quickstart block. It links a Docker deployment repository, builder-docker, and a documentation site at docs.builder.design, and those are where install and run instructions live. What the README does give you is the constraint set you need before running anything: Node 22 or later and TypeScript 5.8 or later for the current line, Angular 20 as the framework, and a Drupal instance as the headless content backend if you intend to publish rather than only design. The editing surface itself is a web application with SSR through Express, so a production deployment is a Node process, not a static bundle. The feature list also implies a backend for the media library, since batch upload and update happen from the front end, and for page history versions, which are created on overwrite operations. Those are storage concerns that the builder alone does not satisfy. If you are evaluating this repository without the companion CMS, you can exercise the editor and the JSON output, but the publish path and the media library depend on infrastructure the README points at rather than describes. The honest reading is that web-builder is one component of a multi-repository system, and the README is a hub page for that system.

The AI features are partly behind Builder Pro

The description leads with AI-powered UI generation, and the README separates that claim carefully. The Builder Pro preview section is explicitly annotated as being about generating UI, pages, and tool applications from large models, with a welcome-to-try note, and its screenshots show a chat entry, Tailwind output, charts, and Mermaid diagrams. The open source feature table, by contrast, lists a rule-based quick page generation: generate a page from the component library according to certain rules. Those are different mechanisms. The DeepSeek custom component demo video and the video titled AI creates custom components, optimizes copy, and generates an entire page in one sentence sit alongside the Pro section, so some model-driven workflow is demonstrated publicly, but the README does not state which parts of it ship in this repository and which require the hosted product. If AI generation is the reason you are looking at web-builder, that boundary is the first thing to resolve with the maintainer. Reading the description as a promise that this repository contains the AI generation tier would be a mistake the README does not correct.

AGPL-3.0 and the network-use boundary

The licence is AGPL-3.0. This is the licence with the network clause, which means that if you modify the builder and let users interact with it over a network, the source of your modified version is expected to be offered to those users. For an internal page builder used by a marketing team behind a login, that is a manageable obligation. For a product where the builder is part of what you sell, or where you intend to fork the editor and keep your component library proprietary, the licence is a structural constraint rather than a formality. The repository does not offer a separate commercial licence in the supplied material, and the Pro tier is described as a hosted experience rather than as a licence exception. This is not legal advice; the point is that the licence choice should be settled by whoever handles your compliance before an engineer spends a sprint wiring the editor into a product. Note also that the companion repositories, builder-cms, builder-docker, and web-builder-skills, are separate projects and may carry their own terms.

Where it loses to a plain Angular component library

The real alternative for many teams is not another visual builder. It is Storybook plus your own Angular components, which the web-builder ecosystem itself acknowledges: the ui-builder skill in web-builder-skills is described as creating and optimizing UI components in Storybook and generating stories plus AI prompt documents. That is the same workflow web-builder replaces, minus the editor. The difference in approach is where the abstraction lives. With Storybook you write components in TypeScript and Tailwind, a designer or content editor cannot rearrange a page without a deploy, and every layout variation is a code change reviewed like any other. With web-builder the layout is data, so reordering and reconfiguring happens at runtime, but the expressiveness ceiling is whatever the component library models, and the JSON tree becomes an artifact you must version, migrate, and validate. If your pages change quarterly, that trade is bad: you have taken on a runtime data format, a history-version feature, and a Drupal dependency to avoid a handful of template edits. If your pages change weekly across multiple languages and themes, the trade starts to make sense. The README's own multi-theme preview and multi-language publishing features are the evidence for the second case, and they are the features with no cheap equivalent in a hand-written Angular app.

Maintenance cost and the language barrier

Two costs are visible in the material. The first is upgrade cost, described above: builder majors track Angular majors, and the current line is Angular 20 with zoneless change detection and incremental hydration, features that tend to surface integration problems in surrounding libraries. The second is documentation language. The README is primarily Chinese. The English description is a single paragraph, the feature table is Chinese, the version matrix is Chinese, and the linked documentation site and video demos are Chinese. For a team without Chinese readers, every question about component schema, API data source configuration, or Drupal integration routes through the documentation site and the video list rather than through a searchable English reference. That is a real adoption cost and it is not a criticism of the project; it is a fact about who can self-serve. The mitigating factor is the companion skills package, which is described in English-language tooling terms (Claude Code skills for UI building, JSON translation, and image prompt generation) and may be the most accessible entry point for an English-speaking team evaluating the workflow. The maintenance question to ask the maintainer is not about release frequency, which looks healthy, but about which of the three or four linked repositories is required for a working publish path.

Editorial conclusion

Adopt web-builder if your team already runs Drupal as a headless backend and wants Angular developers editing pages through a drag-and-drop canvas rather than through Twig templates. Do not adopt it if you need a hosted SaaS builder, if you cannot accept AGPL-3.0 obligations on a network-served derivative, or if you are unwilling to read Chinese documentation. Before committing, verify three things: that the Node and Angular versions in the compatibility table match your toolchain, that the AI generation features you actually need are not confined to Builder Pro, and that the builder-cms and builder-docker repositories are still maintained alongside this one.

Official sources

  1. biaogebusy/web-builder on GitHub
  2. License: AGPL-3.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes