feakin-web
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.
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
- [x] Jison with Mermaid
- [ ] 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>
- [ ] WebComponent, like
- [ ] 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.
- install
npm install --legacy-peer-deps
Note: nx.js use Craco, which will need --legacy-peer-deps
.
- development exporter, can just run by tests
License
- Flow parser based on mermaid.js
- Excalidraw's type based on excalidraw
@2022 Thoughtworks This code is distributed under the MPL license. See LICENSE
in this directory.