Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Pulse Editor

<div align="center">

[![Static Badge](https://img.shields.io/badge/docs-8A2BE2?style=for-the-badge)](https://docs.pulse-editor.com)
[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/s6J54HFxQp)
[![Licence](https://img.shields.io/github/license/Ileriayo/markdown-badges?style=for-the-badge)](./LICENSE)

Expand Down
4 changes: 0 additions & 4 deletions docs/docs/guide/develop-extensions/_category_.json

This file was deleted.

6 changes: 5 additions & 1 deletion docs/docs/guide/develop-extensions/index.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
# Develop Extensions
---
sidebar_position: 5
---

# Development Guide

## Choose your framework

Expand Down
11 changes: 11 additions & 0 deletions docs/docs/guide/develop-extensions/react.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Develop Extensions with React

## Create an extension project with React
```bash
pulse create --framework react
```

## React Library
The `@pulse-editor/react-api` is automatically installed if you create a project using the command above.

In this package, it provides many useful hooks for your extension to interact with Pulse Editor Core via [Inter-Module Communication (IMC)](/docs/guide/pulse-editor-app/extension-system/imc).
4 changes: 0 additions & 4 deletions docs/docs/guide/develop-extensions/react/_category_.json

This file was deleted.

1 change: 0 additions & 1 deletion docs/docs/guide/develop-extensions/react/index.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/docs/guide/develop-extensions/react/react-template.md

This file was deleted.

4 changes: 0 additions & 4 deletions docs/docs/guide/pulse-editor-app/_category_.json

This file was deleted.

4 changes: 4 additions & 0 deletions docs/docs/guide/pulse-editor-app/concepts.md
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
---
sidebar_position: 1
---

# Concepts
13 changes: 13 additions & 0 deletions docs/docs/guide/pulse-editor-app/extension-system/core.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
sidebar_position: 1
---


# Pulse Editor Core

## One Codebase, Every Platform
Pulse Editor Core is developed using modern web technologies with Next.js, enabling a single codebase for all platforms. Its architecture is built around abstract interfaces, allowing native-specific implementations to plug in cleanly while maintaining a consistent core logic.

## Native Support via Electron and Capacitor
After the app is built with Next.js, it is deployed to native platforms using Electron for desktop and Capacitor for mobile. This setup enables full native functionality across devices while preserving the benefits of a unified codebase.

11 changes: 11 additions & 0 deletions docs/docs/guide/pulse-editor-app/extension-system/extensions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
sidebar_position: 2
---

# Extensions

Pulse Editor employs Micro-Frontend architecture with [Module Federation](https://module-federation.io/) for its modular extension system.

Each Pulse Editor extension is a MF remote module. Pulse Editor Core registers installed extensions when Pulse Editor starts, it does not yet load at this stage.

Pulse Editor only loads enabled extensions when either a compatible file type is opened, or a console view for that extension is opened.
20 changes: 20 additions & 0 deletions docs/docs/guide/pulse-editor-app/extension-system/imc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
sidebar_position: 3
---

# Inter-Module Communication (IMC)


**Inter-Module Communication (IMC)** provides communication channels between different modules powered by Webpack Module Federation. Essentially, this means every module (extensions and Pulse Editor Core) is able to establish incoming and outgoing channels with any other modules (extensions and Pulse Editor Core).

:::info
Establishing **IMC** between extensions is up to the extensions' developer(s). Pulse Editor does **not** make communication channels **among extensions** by default, it **only** establishes communication channels between **itself (Pulse Editor Core)** and **any extension** upon loading that extension.

For example:
When extension A and B load, the Core makes IMC connections like so:
**Core < -- > Extension A**
**Core < -- > Extension B**

But Pulse Editor does not make the following connection, unless the developer of extension A and developer of extension B agree to inter-connect them with utils from `@pulse-editor/shared-utils`:
**Extension A < -- > Extension B**
:::
12 changes: 11 additions & 1 deletion docs/docs/guide/pulse-editor-app/extension-system/index.md
Original file line number Diff line number Diff line change
@@ -1 +1,11 @@
# Extension System
---
sidebar_position: 2
---

# Extension System

Pulse Editor is built upon powerful Micro-Frontend technologies to be modular, extensible, and cross-platform.

import DocCardList from '@theme/DocCardList';

<DocCardList />
4 changes: 4 additions & 0 deletions docs/docs/guide/pulse-editor-app/index.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
sidebar_position: 4
---

# Pulse Editor App

## Learn about core concepts of Pulse Editor App
Expand Down