Skip to content

feakin/feakin-web

Repository files navigation

Feakin

Modernize architecture visualization assets management, based on Diagram-as-code, so you can create, share and edit diagram. Support for import Mermaid, PlantUML, Excalidraw, Dot and more.

CI codecov npm

Code Coverage

Chinese introduction: Feakin 是一个架构资产可视化管理工具。基于图表即代码 的思想体系,支持导入 Mermaid, PlantUML, Excalidraw, Dot 等图形资产格式。

Core Technical:

  • concepts: Collaboration (CRDT) + DSL (pest.rs) + Graph Engine + Editor Language (Monaco)
  • stacks: Rust( + WASM) + React + TypeScript

特性:

  • Graph
    • 跨图工具转换。支持导入 Mermaid, PlantUML, Excalidraw, Dot 等图形资产格式,并基于 Graph MIR 进行转换。
    • 广泛的图表格式导出。
      • Drawio
      • Excalidraw
    • 模板创建。支持创建模板,并基于 Graph MIR 进行转换,转换成其它图表格式。
    • 多样化图形布局。支持 Dagre、ELK、Cola 等布局。
    • Dagre
      • replace Grapvhiz to WASM
    • 手绘风格。
      • Rough.js sample
  • Collaboration
    • Server
    • Protocol
      • CRDT
    • Editor
  • DSL
    • FKL Syntax
    • FKL Parser
    • FKL LSP
  • Editor
    • Dot Language
    • Fkl Language

DSL Samples

ContextMap TicketBooking {
  Reservation <-> TicketContext;
}

Context TicketContext {
  Aggregate Ticket, Reservation;
}

Entity Ticket {
  Struct {
    seat: String;
  }
}

// binding;
impl CinemaCreated {
  endpoint {
    GET "/book/{id}";
    authorization: Basic admin admin;
    response: Cinema;
  }

  flow {
    via UserRepository::getUser receive x: User;
    via Kafak send User to "user.create";
  }
}

Demos

Try Online demo: https://online.feakin.com/ Or install @feakin/cli for diagrams converter:

npm install -g @feakin/cli

feakin --input software-development.md.drawio --output sd.excalidraw

Todos

Setup

We use nx.js for mono-repo architecture.

  1. install
npm install --legacy-peer-deps

Note: nx.js use Craco, which will need --legacy-peer-deps.

  1. development exporter, can just run by tests

License

@2022 Thoughtworks This code is distributed under the MPL license. See LICENSE in this directory.