Giter VIP home page Giter VIP logo

symo's Introduction

symo

Documentation tool for SYstem based on MOdel. Create model of system in yaml declarative, prepare mardown docs & mermaid diagrams templates and render docs with tool. Watch model & templates dir & recreate docs. Serve docs with simple static http server.

Future vision

Provide some analytics based on system model

Usage

Build:

cargo build -r

help:

symo -h

One time run:

symo dir-with-models dir-with-docs-templates dir-output

Serve with watch:

symo dir-with-models dir-with-docs-templates dir-output -s

Serve with watch and listening addr:

symo dir-with-models dir-with-docs-templates dir-output -s -a localhost:8000

Design

The Concept of symo:

flowchart LR

user
dir-model
dir-template
tool
dir-docs


dir-docs[("out docs<br/>[Container: Dir]<br/><br/>Directory with output markdown files")]
dir-model[("YAML model<br/>[Container: Dir]<br/><br/>Directory with yaml model files")]
dir-template[("template docs<br/>[Container: Dir]<br/><br/>Directory with template markdown files")]
tool["symo<br/>[Container: Rust]<br/><br/>Symo tool"]
tool -.->|"Updates"| dir-docs
tool -.->|"Uses"| dir-model
tool -.->|"Uses"| dir-template
user(("User<br/>[Person]<br/><br/>The User of the symo tool"))
user -.->|"Uses"| tool

Components for one time run mode:

flowchart LR

dir-model
dir-template

subgraph "symo"
  tool-run
  tool-model
  tool-output
end

dir-docs


dir-docs[("out docs<br/>[Container: Dir]<br/><br/>Directory with output markdown files")]
dir-model[("YAML model<br/>[Container: Dir]<br/><br/>Directory with yaml model files")]
dir-template[("template docs<br/>[Container: Dir]<br/><br/>Directory with template markdown files")]
tool-model["Model<br/>[Component: Rust]<br/><br/>Create & maintain model"]
tool-model -.->|"Uses"| dir-model
tool-output["Output<br/>[Component: Rust]<br/><br/>Create output files"]
tool-output -.->|"Updates"| dir-docs
tool-output -.->|"Uses"| dir-template
tool-run["Run<br/>[Component: Rust]<br/><br/>Main loop for a tool"]
tool-run -.->|"Creates"| tool-model
tool-run -.->|"Creates"| tool-output

Components for serve mode:

flowchart LR

dir-model
dir-template

subgraph "symo"
  tool-run
  tool-model
  tool-output
  tool-watch
  tool-serve
end

dir-docs


dir-docs[("out docs<br/>[Container: Dir]<br/><br/>Directory with output markdown files")]
dir-model[("YAML model<br/>[Container: Dir]<br/><br/>Directory with yaml model files")]
dir-template[("template docs<br/>[Container: Dir]<br/><br/>Directory with template markdown files")]
tool-model["Model<br/>[Component: Rust]<br/><br/>Create & maintain model"]
tool-model -.->|"Uses"| dir-model
tool-output["Output<br/>[Component: Rust]<br/><br/>Create output files"]
tool-output -.->|"Updates"| dir-docs
tool-output -.->|"Uses"| dir-template
tool-run["Run<br/>[Component: Rust]<br/><br/>Main loop for a tool"]
tool-run -.->|"Creates"| tool-model
tool-run -.->|"Creates"| tool-output
tool-run -.->|"Creates"| tool-serve
tool-run -.->|"Creates"| tool-watch
tool-serve["Serve<br/>[Component: Rust]<br/><br/>Static http server for docs directory"]
tool-serve -.->|"Uses"| dir-docs
tool-watch["Watch<br/>[Component: Rust]<br/><br/>Watch for changes in modules or templates"]
tool-watch -.->|"Creates"| tool-model
tool-watch -.->|"Creates"| tool-output
tool-watch -.->|"Uses"| dir-model
tool-watch -.->|"Uses"| dir-template

Dataflow for one time run mode:

flowchart LR

dir-model
dir-template

subgraph "symo"
  tool-model
  tool-output
end

dir-docs


dir-docs[("out docs<br/>[Container: Dir]<br/><br/>Directory with output markdown files")]
dir-model[("YAML model<br/>[Container: Dir]<br/><br/>Directory with yaml model files")]
dir-model ==>|"YAML files"| tool-model
dir-template[("template docs<br/>[Container: Dir]<br/><br/>Directory with template markdown files")]
dir-template ==>|"Markdown template files"| tool-output
tool-model["Model<br/>[Component: Rust]<br/><br/>Create & maintain model"]
tool-model ==>|"Model data"| tool-output
tool-output["Output<br/>[Component: Rust]<br/><br/>Create output files"]
tool-output ==>|"Markdown files"| dir-docs

Dataflow for serve mode:

flowchart LR

dir-model
dir-template

subgraph "symo"
  tool-model
  tool-output
  tool-watch
  tool-serve
end

dir-docs


dir-docs[("out docs<br/>[Container: Dir]<br/><br/>Directory with output markdown files")]
dir-docs ==>|"Context of files"| tool-serve
dir-model[("YAML model<br/>[Container: Dir]<br/><br/>Directory with yaml model files")]
dir-model ==>|"YAML files"| tool-model
dir-model ==>|"files change info"| tool-watch
dir-template[("template docs<br/>[Container: Dir]<br/><br/>Directory with template markdown files")]
dir-template ==>|"Markdown template files"| tool-output
dir-template ==>|"files change info"| tool-watch
tool-model["Model<br/>[Component: Rust]<br/><br/>Create & maintain model"]
tool-model ==>|"Model data"| tool-output
tool-output["Output<br/>[Component: Rust]<br/><br/>Create output files"]
tool-output ==>|"Markdown files"| dir-docs
tool-serve["Serve<br/>[Component: Rust]<br/><br/>Static http server for docs directory"]
tool-watch["Watch<br/>[Component: Rust]<br/><br/>Watch for changes in modules or templates"]

License

Licensed under either of

at your option.

symo's People

Contributors

ewienik avatar

Stargazers

 avatar

Watchers

 avatar

symo's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.