awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
prevwong avatar

prevwong/craft.js

0
View on GitHub↗
8,683 stars·842 forks·TypeScript·MIT·46 viewscraft.js.org↗

Craft.js

Craft.js is a framework for building extensible drag-and-drop page editors using React components and serializable state management. It provides the core infrastructure to construct custom page builders where users can compose layouts by dragging, dropping, and repositioning elements within a structured editor environment.

The framework manages editor state through a component-based node tree, where each user element is represented as an internal node storing its type, props, and parent relationships. This state is managed via React Context and can be serialized to JSON for persistence and sharing of page designs. The editor supports custom rendering overrides, allowing developers to replace default element rendering with their own React components, and provides a drag-and-drop event system with configurable drop indicator styling.

Developers can define user components as reusable building blocks, mark elements as droppable regions that accept child components, and create component toolboxes that serve as palettes of draggable items. The framework supports inline property editing through content-editable interfaces or dedicated settings panels, layer tree management with customizable rendering and expansion controls, and the ability to inspect and manipulate editor state programmatically. Custom editing interfaces can be defined for components, enabling interactive editing experiences like modals for updating props.

Features

  • Drag-and-Drop Page Builders - A framework for building custom drag-and-drop page editors with extensible React components and serializable state.
  • Drag and Drop - Provides the core drag-and-drop event system for repositioning components within a page editor.
  • Editor - Exports and imports the full editor layout as JSON for persistence or sharing of page designs.
  • JSON Export and Restore - Exports and imports the full editor layout as JSON for persistence and sharing of page designs.
  • Component Toolboxes - Provides a palette of draggable items that create new component instances when dropped into the editor.
  • Reactive Design JSON States - Exports and imports the full editor layout as JSON for persistence and sharing of page designs.
  • Drag-and-Drop Page Editors - A framework for building extensible drag-and-drop page editors with React components and serializable state management.
  • Droppable Zone Definitions - Marks elements as containers that accept child elements, making those children draggable within the editor.
  • Draggable Layout Elements - Enables elements to be placed as children of droppable regions and repositioned via drag-and-drop.
  • Draggable Component Definitions - Creates reusable building blocks that end users can drag, drop, and edit within the page editor.
  • Editor Node Trees - Provides the internal node tree that represents every user element in the page editor.
  • Internal Node Representations - Represents each user element as an internal node storing type, props, and parent relationships for state management.
  • Rendering Overrides - Allows replacing default rendering of user elements with custom React components for flexible UI control.
  • React State Bindings - Manages editor state through React Context, enabling components to read and manipulate the page composition tree.
  • Programmatic State Inspectors - Provides APIs to inspect and manipulate the editor's internal node tree for features like copying components.
  • Draggable Component Palettes - Provides a component toolbox that serves as a palette of draggable items for building page layouts.
  • Editor State APIs - Provides APIs to read the current editor state including all nodes, events, and selected elements.
  • Custom Editing Interfaces - Allows defining custom editing interfaces for components, enabling interactive editing like modals for updating props.
  • Component Layer Trees - Manages and customizes the display of nested component layers in the editor interface with expansion controls.
  • Property Editing Panels - Supports modifying component props directly through content-editable interfaces or dedicated settings panels.
  • Layer Tree Expanders - Ships a layer tree with configurable default expansion of root nodes for managing nested components.
  • Component Editing Interfaces - Defines custom editing interfaces for components enabling interactive editing like content-editable text.

Star history

Star history chart for prevwong/craft.jsStar history chart for prevwong/craft.js

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Craft.js

Similar open-source projects, ranked by how many features they share with Craft.js.
  • givanz/vvvebjsgivanz avatar

    givanz/VvvebJs

    8,532View on GitHub↗

    VvvebJs is a self-hosted, vanilla JavaScript library for visually assembling web pages by dragging pre-built HTML components onto a canvas. It functions as a visual HTML editor and component-based page builder that requires no build tools or external dependencies, and can be deployed on a server with PHP or Node.js backend for saving and exporting pages. The builder organizes reusable HTML components into named groups for drag-and-drop assembly, and provides visual property editing that modifies HTML attributes, CSS styles, and class names through form controls and property panels. It include

    JavaScriptbootstrapbootstrap5builder
    View on GitHub↗8,532
  • unlayer/react-email-editorunlayer avatar

    unlayer/react-email-editor

    5,086View on GitHub↗

    React Email Editor is a drag-and-drop visual builder for creating responsive email templates, built as a React embeddable component. It also serves as an AI-powered email designer, a collaborative email design tool, and a React component library for composing emails programmatically with JSX. The editor represents designs as structured JSON and supports multi-format rendering for email clients, web pages, and PDF. What distinguishes this editor is its deep AI integration: users can generate full email templates from natural language, rewrite text with chosen intent, produce multiple text vari

    TypeScriptbuilderdrag-and-dropemail
    View on GitHub↗5,086
  • woai3c/visual-drag-demowoai3c avatar

    woai3c/visual-drag-demo

    5,628View on GitHub↗

    This is a low-code visual drag-and-drop editor project for building web page layouts. It provides a canvas-based environment where users can assemble pages by placing, resizing, and rotating pre-built UI components through direct mouse interaction. The editor includes a grid-based alignment system that snaps components to invisible grid lines or other component edges for precise positioning. Components can be grouped into single units or locked in place to prevent accidental movement, and animations or custom actions can be bound to user interactions like clicks or hovers. An undo-redo comman

    Vue
    View on GitHub↗5,628
  • react-grid-layout/react-draggablereact-grid-layout avatar

    react-grid-layout/react-draggable

    9,292View on GitHub↗

    react-draggable is a drag and drop library and coordinate-based position manager for React. It functions as a component wrapper that adds draggable behavior to user interface elements, enabling them to be moved via mouse or touch interactions. The library provides touch-enabled interaction tools that unify pointer events across desktop browsers and touch screen devices. It utilizes CSS transforms to handle element movement and coordinate tracking. The system covers movement constraints such as axis restriction and boundary clamping to confine elements within specific areas. It includes posit

    JavaScript
    View on GitHub↗9,292
See all 30 alternatives to Craft.js→

Frequently asked questions

What does prevwong/craft.js do?

Craft.js is a framework for building extensible drag-and-drop page editors using React components and serializable state management. It provides the core infrastructure to construct custom page builders where users can compose layouts by dragging, dropping, and repositioning elements within a structured editor environment.

What are the main features of prevwong/craft.js?

The main features of prevwong/craft.js are: Drag-and-Drop Page Builders, Drag and Drop, Editor, JSON Export and Restore, Component Toolboxes, Reactive Design JSON States, Drag-and-Drop Page Editors, Droppable Zone Definitions.

What are some open-source alternatives to prevwong/craft.js?

Open-source alternatives to prevwong/craft.js include: givanz/vvvebjs — VvvebJs is a self-hosted, vanilla JavaScript library for visually assembling web pages by dragging pre-built HTML… unlayer/react-email-editor — React Email Editor is a drag-and-drop visual builder for creating responsive email templates, built as a React… woai3c/visual-drag-demo — This is a low-code visual drag-and-drop editor project for building web page layouts. It provides a canvas-based… react-grid-layout/react-draggable — react-draggable is a drag and drop library and coordinate-based position manager for React. It functions as a… mzabriskie/react-draggable — react-draggable is a UI interaction library that provides core primitives and components for adding tactile movement… gridstack/gridstack.js — gridstack.js is a JavaScript grid layout library and responsive dashboard framework used to create interactive…