feakin-web icon indicating copy to clipboard operation
feakin-web copied to clipboard

Feakin 是一个架构设计与可视化协作工具。Feakin is a architecture design and visual collaboration tool.

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

  • [ ] Render
  • [ ] Editor
    • [x] text Editor with Monaco Editor
    • [ ] interactive Editor with Graphical Editor
  • [x] Parser
  • [ ] collaboration
  • [x] CLI
    • [x] upgrade publish script
  • [ ] Architecture Features
    • [x] Playground: https://online.feakin.com/
    • [ ] ComponentLess architecture
      • [ ] WebComponent, like <feakin data="" layout="" import="" import-type=""></feakin>
    • [ ] Templates
      • [ ] DDD ?
      • [ ] Layered Architecture
      • [ ] Test Pyramid
    • [x] Export and Import
      • [x] MxGraph
      • [x] Excalidraw
      • [ ] PlantUML
  • [ ] Libraries
    • [ ] compatible Excalidraw libraries : https://libraries.excalidraw.com/?theme=light&sort=default

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.