:art: Diagram as Code for prototyping cloud system architectures

Overview

diagrams logo

Diagrams

license pypi version python version Run tests todos contributors

Buy Me A Coffee

Diagram as Code.

Diagrams lets you draw the cloud system architecture in Python code. It was born for prototyping a new system architecture design without any design tools. You can also describe or visualize the existing system architecture as well. Diagrams currently supports main major providers including: AWS, Azure, GCP, Kubernetes, Alibaba Cloud, Oracle Cloud etc... It also supports On-Premise nodes, SaaS and major Programming frameworks and languages.

Diagram as Code also allows you to track the architecture diagram changes in any version control system.

NOTE: It does not control any actual cloud resources nor does it generate cloud formation or terraform code. It is just for drawing the cloud system architecture diagrams.

Providers

aws provider azure provider gcp provider kubernetes provider alibaba cloud provider oracle cloud provider openstack provider firebase provider elastic provider outscale provider on premise provider generic provider programming provider saas provider

Getting Started

It requires Python 3.6 or higher, check your Python version first.

It uses Graphviz to render the diagram, so you need to install Graphviz to use diagrams. After installing graphviz (or already have it), install the diagrams.

macOS users can download the Graphviz via brew install graphviz if you're using Homebrew.

# using pip (pip3)
$ pip install diagrams

# using pipenv
$ pipenv install diagrams

# using poetry
$ poetry add diagrams

You can start with quick start. Check out guides for more details, and you can find all available nodes list in here.

Examples

Event Processing Stateful Architecture Advanced Web Service
event processing stateful architecture advanced web service with on-premise

You can find all the examples on the examples page.

Contributing

To contribute to diagram, check out contribution guidelines.

Let me know if you are using diagrams! I'll add you in showcase page. (I'm working on it!) :)

Who uses it?

GitPitch

GitPitch is the perfect slide deck solution for Tech Conferences, Training, Developer Advocates, and Educators. Diagrams is now available as a dedicated Cloud Diagram Markdown Widget so you can use Diagrams directly on any slide for conferences, meetups, and training.

Cloudiscovery helps you to analyze resources in your cloud (AWS/GCP/Azure/Alibaba/IBM) account. It allows you to create a diagram of analyzed cloud resource map based on this Diagrams library, so you can draw the your existing cloud infrastructure with Cloudicovery.

Airflow Diagrams is an Airflow plugin that aims to easily visualise your Airflow DAGs on service level from providers like AWS, GCP, Azure, etc. via diagrams.

Other languages

  • If you are familiar to Go, you can use go-diagrams as well.

License

MIT

Comments
  • change the color for the clusters

    change the color for the clusters

    Hi Experts,

    I would like to change the color for the clusters like Tenancy, Compartment, VCN, OKE etc., Please refer below screenshots, Is that possible? If yes, can you pls guide me on that?

    Output from Diagram tool:

    diagram-screenshot

    Ideal output I would like to see:

    ideal_output

    kind/feature comp/cluster 
    opened by mumanoha 21
  • Update GCP Icons

    Update GCP Icons

    Hi there, I'm enjoying using Diagrams.

    But I've noticed a lot of the GCP icons appear to be outdated...

    There is a new GCP architecture icons pack available at this link: https://cloud.google.com/icons Is it possible to update the library to use these?

    Thanks, Soomin

    kind/feat/icon area/provider/gcp status/accepted 
    opened by soomineom 20
  • #90 #279 branded clusters [WIP]

    #90 #279 branded clusters [WIP]

    This is a PR based on https://github.com/mingrammer/diagrams/pull/90 add custom AWS clusters (see examples/aws.png for reference)

    I would love to here feedback before I will consider this to be ready.

    kind/feature status/need-to-review comp/cluster 
    opened by dan-ash 20
  • Basic support for C4 model primitives.

    Basic support for C4 model primitives.

    C4 is a model for visualizing software architecture. It defines a common terminology and a few core diagrams at different abstraction levels. We primarily use the System Landscape, System Context and Container diagrams so I started with just the entities needed for those.

    For a definition like this:

    from diagrams import Diagram
    from diagrams.c4 import Person, Container, Database, System, SystemBoundary, Relationship
    
    graph_attr = {
        "splines": "spline",
    }
    
    with Diagram("Container diagram for Internet Banking System", direction="TB", graph_attr=graph_attr):
        customer = Person(
            name="Personal Banking Customer", description="A customer of the bank, with personal bank accounts."
        )
    
        with SystemBoundary("Internet Banking System"):
            webapp = Container(
                name="Web Application",
                technology="Java and Spring MVC",
                description="Delivers the static content and the Internet banking single page application.",
            )
    
            spa = Container(
                name="Single-Page Application",
                technology="Javascript and Angular",
                description="Provides all of the Internet banking functionality to customers via their web browser.",
            )
    
            mobileapp = Container(
                name="Mobile App",
                technology="Xamarin",
                description="Provides a limited subset of the Internet banking functionality to customers via their mobile device.",
            )
    
            api = Container(
                name="API Application",
                technology="Java and Spring MVC",
                description="Provides Internet banking functionality via a JSON/HTTPS API.",
            )
    
            database = Database(
                name="Database",
                technology="Oracle Database Schema",
                description="Stores user registration information, hashed authentication credentials, access logs, etc.",
            )
    
        email = System(name="E-mail System", description="The internal Microsoft Exchange e-mail system.", external=True)
    
        mainframe = System(
            name="Mainframe Banking System",
            description="Stores all of the core banking information about customers, accounts, transactions, etc.",
            external=True,
        )
    
        customer >> Relationship("Visits bigbank.com/ib using [HTTPS]") >> webapp
        customer >> Relationship("Views account balances, and makes payments using") >> [spa, mobileapp]
        webapp >> Relationship("Delivers to the customer's web browser") >> spa
        spa >> Relationship("Make API calls to [JSON/HTTPS]") >> api
        mobileapp >> Relationship("Make API calls to [JSON/HTTPS]") >> api
    
        api >> Relationship("reads from and writes to") >> database
        api >> Relationship("Sends email using [SMTP]") >> email
        api >> Relationship("Makes API calls to [XML/HTTPS]") >> mainframe
        customer << Relationship("Sends e-mails to") << email
    

    It produces a diagram like this: container_diagram_for_internet_banking_system

    The implementation is a bit different from the other resources which are auto-generated based on images as far as I understand. If you'd prefer a different approach or would rather not have this upstream in diagrams, let me know! I also wasn't sure how to best integrate this in the documentation, but we could figure something out if this is a feature you'd like to see.

    Original discussion in #489.

    proposal comp/cluster comp/node comp/edge status/accepted 
    opened by mbruggmann 19
  • Label of edge misaligned

    Label of edge misaligned

    Hi there, Firstly, I love this project, thanks a lot! I am currently trying to create a diagram with labelled edges but the label position is incorrect.

    For example, when building this example from the doc. You can compare the position of label collect (on the right of the image, between metric and replica) with the one of the documentation (which seems correct).

    Tested with :

    • Ubuntu 18.04 and dot - graphviz version 2.40.1 (20161225.0304)
    • Ubuntu 20.04 and dot - graphviz version 2.43.0 (0)

    In both configurations, here is what I get: advanced_web_service_with_on-premise_(colored)

    Image from the documentation: image

    Any clue?

    bug comp/edge status/accepted 
    opened by tducret 16
  • How to change node color for OCI

    How to change node color for OCI

    First of all, Thanks a lot for this amazing innovative tool!! Great work!!

    I am new to this tool and still learning it, so please forgive me if I am wrong.

    Based on my research, there is no way to change the color of the node / cloud resources icon, lets say for OCI, it's always black, but Oracle is Red. Is that something that you guys can provide a resolution?

    Thanks in advance for the help / support!!

    kind/feat/icon comp/node area/provider/oci 
    opened by mumanoha 15
  • Update GCP icons

    Update GCP icons

    Update existing GCP icons using updated official GCP icons: see https://cloud.google.com/icons.

    Note, generic icons are updated with the corresponding new generic icon, except "ai-platform-data-labeling-service.png" since it now has its own unique icon.

    Closes #554.

    opened by DataDavD 14
  • Add icons to docs

    Add icons to docs

    Thought it could be useful to have an image showing what the icon looks like in the docs. Also fixes #466

    This is how the change looks:

    diagrams_docs_with_icons

    I couldn't decide how to handle the white icons from OCI, so they are currently not visible against the white background, but they all have a black icon alternative next to them which is visible so that shouldn't be much of an issue. Can update this though if there any any suggestions for handling the white icons.

    kind/docs status/accepted 
    opened by lrjball 14
  • Misaligned Node Labels

    Misaligned Node Labels

    By the way, excellent project!

    I've run the examples but the node labels are bad aligned. Maybe I'm using some incompatible graphviz version

    • graphviz: 2.40.1-2
    • diagrams: 0.2.1

    clustered_web_services

    bug 
    opened by bkmeneguello 14
  • Diagrams on the web #24 #177

    Diagrams on the web #24 #177

    Here a POC for a web generator.

    Instructions: Go in docker directory. Run docker-compose up --build Wait to complete then open your browser http://0.0.0.0:5000/

    It's an early version with bugs but basically you can build diagrams. Added fonts but only support Asian language CJK, and ascii + French (tested language). I mainly copy: http://webgraphviz.com/ :-)

    kind/feature proposal status/need-to-review 
    opened by gabriel-tessier 12
  • Add slack

    Add slack

    Motivation

    We sometimes do chatops with slack. We can potentially regard slack as a part of cloud architecture. So, it would be great to add the slack icon.

    Resources

    https://brandfolder.com/slack/logos

    Comment

    If it would be ok to add slack, I am not sure where it should be categorized.

    kind/feat/provider proposal status/accepted 
    opened by yu-iskw 11
  • Node as cluster

    Node as cluster

    This is a PR to replace #438 to fix up the merge conflicts. Most of the work has been done by others but I am willing to address any comments in this PR and keep it up to date to get it merged.

    Not tested as #799 needs merged too.

    opened by lazzurs 0
  • chore(deps): bump setuptools from 59.6.0 to 65.5.1

    chore(deps): bump setuptools from 59.6.0 to 65.5.1

    Bumps setuptools from 59.6.0 to 65.5.1.

    Release notes

    Sourced from setuptools's releases.

    v65.5.1

    No release notes provided.

    v65.5.0

    No release notes provided.

    v65.4.1

    No release notes provided.

    v65.4.0

    No release notes provided.

    v65.3.0

    No release notes provided.

    v65.2.0

    No release notes provided.

    v65.1.1

    No release notes provided.

    v65.1.0

    No release notes provided.

    v65.0.2

    No release notes provided.

    v65.0.1

    No release notes provided.

    v65.0.0

    No release notes provided.

    v64.0.3

    No release notes provided.

    v64.0.2

    No release notes provided.

    v64.0.1

    No release notes provided.

    v64.0.0

    No release notes provided.

    v63.4.3

    No release notes provided.

    v63.4.2

    No release notes provided.

    ... (truncated)

    Changelog

    Sourced from setuptools's changelog.

    v65.5.1

    Misc ^^^^

    • #3638: Drop a test dependency on the mock package, always use :external+python:py:mod:unittest.mock -- by :user:hroncok
    • #3659: Fixed REDoS vector in package_index.

    v65.5.0

    Changes ^^^^^^^

    • #3624: Fixed editable install for multi-module/no-package src-layout projects.
    • #3626: Minor refactorings to support distutils using stdlib logging module.

    Documentation changes ^^^^^^^^^^^^^^^^^^^^^

    • #3419: Updated the example version numbers to be compliant with PEP-440 on the "Specifying Your Project’s Version" page of the user guide.

    Misc ^^^^

    • #3569: Improved information about conflicting entries in the current working directory and editable install (in documentation and as an informational warning).
    • #3576: Updated version of validate_pyproject.

    v65.4.1

    Misc ^^^^

    • #3613: Fixed encoding errors in expand.StaticModule when system default encoding doesn't match expectations for source files.
    • #3617: Merge with pypa/distutils@6852b20 including fix for pypa/distutils#181.

    v65.4.0

    Changes ^^^^^^^

    v65.3.0

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies python 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump isort from 4.3.21 to 5.11.4

    chore(deps-dev): bump isort from 4.3.21 to 5.11.4

    Bumps isort from 4.3.21 to 5.11.4.

    Release notes

    Sourced from isort's releases.

    5.11.4

    Changes

    :package: Dependencies

    5.11.3

    Changes

    :beetle: Fixes

    :construction_worker: Continuous Integration

    v5.11.3

    Changes

    :beetle: Fixes

    :construction_worker: Continuous Integration

    5.11.2

    Changes

    5.11.1

    Changes December 12 2022

    ... (truncated)

    Changelog

    Sourced from isort's changelog.

    5.11.4 December 21 2022

    5.11.3 December 16 2022

    5.11.2 December 12 2022

    5.11.1 December 12 2022

    5.11.0 December 12 2022

    ... (truncated)

    Commits
    • 98390f5 Merge pull request #2059 from PyCQA/version/5.11.4
    • df69a05 Bump version 5.11.4
    • f9add58 Merge pull request #2058 from PyCQA/deps/poetry-1.3.1
    • 36caa91 Bump Poetry 1.3.1
    • 3c2e2d0 Merge pull request #1978 from mgorny/toml-test
    • 45d6abd Remove obsolete toml import from the test suite
    • 3020e0b Merge pull request #2057 from mgorny/poetry-install
    • a6fdbfd Stop installing documentation files to top-level site-packages
    • ff306f8 Fix tag template to match old standard
    • 227c4ae Merge pull request #2052 from hugovk/main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump rope from 0.14.0 to 1.6.0

    chore(deps-dev): bump rope from 0.14.0 to 1.6.0

    Bumps rope from 0.14.0 to 1.6.0.

    Changelog

    Sourced from rope's changelog.

    Release 1.6.0

    New features & Enhancements

    • #559, #560 Improve handling of whitespace in import and from-import statements (@​lieryan)
    • #566, #567, #597 Fix variables in kwonlyargs and posonlyargs not being correctly passed to extracted methods (@​lieryan)

    Unit Test

    • #589, #596 Fix issue with sample_project() creating directories where it shouldn't when running tests (@​lieryan)
    • #547 Add config file for linters
    • #593 Remove only_for decorator for all python versions less than 3.7 (@​edreamleo)

    Tech Debt

    Release 1.5.1

    • #531 Add alternative way to retrieve version number from pyproject.toml

    Release 1.5.0

    Date: 2022-11-23

    Release 1.4.0

    ... (truncated)

    Commits
    • 85301a1 Bump version
    • 25e4736 Update CHANGELOG.md
    • 950f18a Missed fix from #546
    • ad886ca Create README.md
    • 7fc05ef Merge pull request #597 from python-rope/lieryan-posonlyargs-kwonlyargs-scope
    • c1b809c Mark test_extract_function_with_posonlyargs() for Python 3.8 and higher
    • d3bfca1 Remove unnecessary if isinstance(node, ast.arg) check
    • 5819fd2 Fix Python 3.7 doesn't have posonlyargs
    • 5f24a11 Simplify _get_argnames()
    • f1393db Update CHANGELOG.md
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Labels not aligned to the Arrows (Edge).

    Labels not aligned to the Arrows (Edge).

    Hi, I am getting the labels not very well aligned to the Arrows (Edge). Can you please point me in the direction to solve it?

    dot - graphviz version 2.50.0 (20211204.2007) python packages: diagrams 0.23.1 graphviz 0.20.1

    latome_real-time_path_block_diagram-3.pdf

    from diagrams import Diagram, Edge, Cluster
    from diagrams.c4 import C4Node
    from functools import partial
    block = partial(C4Node, type='')
    conne = partial(Edge, splines='curved')
    
    efex_enc=16
    jfex_spn=32
    jfex_enc=16
    flat = False
    
    if flat:
        ids = range(efex_enc)
        jids = range(jfex_enc)
        di = {i : f'{i}' for i in range(efex_enc)}
        dr = {i : f'{i * 20}:{(i + 1) * 20 - 1}' for i in range(efex_enc)}
        jdi = {i: f'{i}' for i in range(jfex_spn)}
        jdr = {i: f'{i * 16}:{(i + 1) * 16 - 1}' for i in range(jfex_enc)}
    else:
        ids = [0, 1, 2, 15]
        di = {i : f'{i}' if i !=2 else '(...)' for i in range(efex_enc)}
        dr = {i : f'{i * 20}:{(i + 1) * 20 - 1}' if i !=2 else '(...)' for i in range(efex_enc)}
        jids = [0, 1, 2, 31]
        jdi = {i: f'{i}' if i != 2 else '(...)' for i in range(jfex_spn)}
        jdr = {i: f'{i * 16}:{(i + 1) * 16 - 1}' if i != 2 else '(...)' for i in range(jfex_enc)}
    
    
    with Diagram("LATOME real-time path block diagram", show=False, direction='LR',outformat="pdf"):
        lli_rx = block('Rx')
        lli_tx = block('Tx')
        istage = block('Istage')
        ser = block('Serializer')
        with Cluster("Remap"):
            ism = block("Input Switch matrix")
        user = block("User")
        #mon = block("Mon/TDAQ")
    
        with Cluster("Osum"):
            adapter = block("EMEC adapter")
            masking = block("Masking")
            osm = block("Output Switch Matrix")
            with Cluster("eFEX"):
                efexmle = block('MLE')
                efex_mle = [0]*efex_enc
                efex_crc = [0]*efex_enc
                efex_frb = [0]*efex_enc
                for i in range(efex_enc):
                    if i in ids:
                        with Cluster(f'eFEX encoder {di[i]}'):
                            efex_crc[i] = block(f"CRC {di[i]}")
                            efex_frb[i] = block(f"Frame builder {di[i]}")
                        efexmle >> conne(forward=True,label=f'{dr[i]}') >> efex_crc[i]
                        efex_crc[i] >> conne(label="20 & CRC") >> efex_frb[i]
            with Cluster("jFEX"):
                jfexssm = block('Sum Switch Matrix')
                jfexism = block('Input Switch Matrix')
                jfexmle = block('MLE')
                jfex_sum = [0]*jfex_spn
                jfex_crc = [0]*jfex_enc
                jfex_frb = [0]*jfex_enc
                for i in range(jfex_spn):
                    with Cluster(f'jFEX sum'):
                        if i in jids:
                            jfex_sum[i] = block(f"SUM {jdi[i]}")
                            jfexssm >> conne(label='10') >> jfex_sum[i] >> conne(label="1") >> jfexmle
                jfexism >> conne(label='224') >> jfexmle
                for i in range(jfex_enc):
                    if i in ids:
                        with Cluster(f'jFEX encoder {di[i]}'):
                            jfex_crc[i] = block(f"CRC {i}")
                            jfex_frb[i] = block(f"Frame Builder {i}")
                            jfexmle >> conne(forward=True,label=f'{jdr[i]}') >> jfex_crc[i] >> conne(label="16 & CRC") >> jfex_frb[i]
    
    
        lli_rx >> conne(label="48x8 words",style='dashed') >> istage >> conne(label="384") >> ism >> conne(label="320") >> user >> conne(label="320") >> adapter >> conne(label="320") >> masking >> conne(label="320") >> efexmle
        masking >>  conne(label="320") >> jfexism
        masking >> conne(label="320") >> jfexssm
        osm >> conne(label="48 frames",style='dashed') >> ser >> conne(label="48x7 words",style='dashed') >> lli_tx
    
        for i in range(efex_enc):
            if i in ids:
                efex_frb[i] >>  conne(label="1") >> osm
        for i in range(jfex_enc):
            if i in ids:
                jfex_frb[i] >>  conne(label="1") >> osm
    
    
    opened by mvsoliveira 0
Releases(v0.23.1)
  • v0.23.1(Nov 8, 2022)

    What's Changed

    • Update README.md by @lakshminarasimmanv in https://github.com/mingrammer/diagrams/pull/757
    • Add: Twilio by @zendern in https://github.com/mingrammer/diagrams/pull/331
    • feat: adding messenger and line icons by @mkfsn in https://github.com/mingrammer/diagrams/pull/412
    • Allow node.id to be specified and not automatically generated by @vanife in https://github.com/mingrammer/diagrams/pull/422
    • Allow Node arguments to be passed to Custom Node by @bra-fsn in https://github.com/mingrammer/diagrams/pull/437
    • autolabel flag in diagrams that modifies label by @anovis in https://github.com/mingrammer/diagrams/pull/482
    • chore(deps): bump minimist from 1.2.5 to 1.2.7 in /website by @dependabot in https://github.com/mingrammer/diagrams/pull/761
    • chore(deps-dev): bump pytest from 6.2.1 to 7.0.1 by @dependabot in https://github.com/mingrammer/diagrams/pull/656
    • docs(website): update text on top page. by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/571
    • Add raspbian gen os by @abrudner in https://github.com/mingrammer/diagrams/pull/589
    • Prefer subprocess run over call by @kkirsche in https://github.com/mingrammer/diagrams/pull/625
    • feat(node): Update Dremio icon by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/651
    • refactor: Reflect changes in Cluster class by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/653
    • feat(node): add AWS app-runner #645 by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/654
    • chore(deps): bump json-schema and jsprim in /website by @dependabot in https://github.com/mingrammer/diagrams/pull/772
    • docs: fix simple typo, clearning -> cleaning by @timgates42 in https://github.com/mingrammer/diagrams/pull/724
    • feat(node): Onprem network remove white backgound by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/697
    • Add: saas.alerting.Xmatters by @jaredcurtis in https://github.com/mingrammer/diagrams/pull/712
    • feat: add Fastly CDN. by @cherouvim in https://github.com/mingrammer/diagrams/pull/740
    • feat(node): add Generic OS Debian (#549) by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/570
    • Add icons to docs by @lrjball in https://github.com/mingrammer/diagrams/pull/499
    • Add support for Harbor as an on-prem registry by @DR-dev-0714 in https://github.com/mingrammer/diagrams/pull/766
    • feat(node): add Generic OS Red Hat by @bdsoha in https://github.com/mingrammer/diagrams/pull/780
    • Add MLflow to OnPrem MLOps by @xadrianzetx in https://github.com/mingrammer/diagrams/pull/698

    New Contributors

    • @lakshminarasimmanv made their first contribution in https://github.com/mingrammer/diagrams/pull/757
    • @mkfsn made their first contribution in https://github.com/mingrammer/diagrams/pull/412
    • @vanife made their first contribution in https://github.com/mingrammer/diagrams/pull/422
    • @bra-fsn made their first contribution in https://github.com/mingrammer/diagrams/pull/437
    • @anovis made their first contribution in https://github.com/mingrammer/diagrams/pull/482
    • @abrudner made their first contribution in https://github.com/mingrammer/diagrams/pull/589
    • @kkirsche made their first contribution in https://github.com/mingrammer/diagrams/pull/625
    • @jaredcurtis made their first contribution in https://github.com/mingrammer/diagrams/pull/712
    • @cherouvim made their first contribution in https://github.com/mingrammer/diagrams/pull/740
    • @DR-dev-0714 made their first contribution in https://github.com/mingrammer/diagrams/pull/766
    • @bdsoha made their first contribution in https://github.com/mingrammer/diagrams/pull/780
    • @xadrianzetx made their first contribution in https://github.com/mingrammer/diagrams/pull/698

    Full Changelog: https://github.com/mingrammer/diagrams/compare/v0.22.0...v0.23.1

    Source code(tar.gz)
    Source code(zip)
  • v0.22.0(Sep 13, 2022)

    What's Changed

    • Fix typo by @Sparkz0629 in https://github.com/mingrammer/diagrams/pull/730
    • Add GraphQL by @houmam in https://github.com/mingrammer/diagrams/pull/660
    • Fix For go get Deprecation by @tmvanetten in https://github.com/mingrammer/diagrams/pull/713
    • Basic support for C4 model primitives. by @mbruggmann in https://github.com/mingrammer/diagrams/pull/508

    New Contributors

    • @Sparkz0629 made their first contribution in https://github.com/mingrammer/diagrams/pull/730
    • @houmam made their first contribution in https://github.com/mingrammer/diagrams/pull/660
    • @tmvanetten made their first contribution in https://github.com/mingrammer/diagrams/pull/713
    • @mbruggmann made their first contribution in https://github.com/mingrammer/diagrams/pull/508

    Full Changelog: https://github.com/mingrammer/diagrams/compare/v0.21.1...v0.22.0

    Source code(tar.gz)
    Source code(zip)
  • v0.21.1(Feb 9, 2022)

  • v0.21.0(Jan 22, 2022)

    Added

    • Support Nagios: #638
    • Support GCP API Gateway: #636
    • Support Chatbot: #633
    • Support DigitalOcean provider: #621
    • Support Dapr: #591
    • Support K3: #575
    • Support Latex: #565
    • Support Puppet: #492
    • Support Dynatrace: #471
    • Support Dremio Service: #451
    • Support Tyk: #449
    • Support Starlette #443
    • Support SVN: #426
    Source code(tar.gz)
    Source code(zip)
  • v0.20.0(May 23, 2021)

    Added

    • Support IBM Provider: #525
    • Support Gitea: #478

    Fixed

    • Update Azure icons: #448, #494
    • Wrong type check and indentations
    • Wrong class names
    Source code(tar.gz)
    Source code(zip)
  • v0.19.1(Feb 22, 2021)

  • v0.19.0(Feb 22, 2021)

    Added

    • More AWS resources: #381
    • Support Azure VMScaleSet: #404
    • Support FastAPI: #380
    • Support flowchart symbols: #377
    • Support GCP monitoring: #343
    • Support PowerBI: #337
    • Support Humio: #409
    • Support New Relic: #340
    • Support Micronaut: #333
    • Support adding Presto, Apache Superset, Nextcloud: #327
    • Support nextcloud, bitwarden, boundary and ambassador: #363
    • Support Scala programming language: #373
    Source code(tar.gz)
    Source code(zip)
  • v0.18.0(Dec 3, 2020)

    Added

    • Support Azure Subnets: #360
    • Support GitHub Actions: #348
    • Support Outscale provider: #338
    • Support Cortex monitoring: #321
    • Support Discord: #313
    • Support CoreDNS and PowerDNS: #302
    • Support NATS: #301
    • Support container runtimes: #300
    • Support Jaeger: #299
    • Support Litmus Chaos and Chaos Mess for chaos engineering: #297
    • Support Dex and Federated OpenID Connect provider: #298
    • Support Buzfeed SSO and Oauth2 Proxy: #296
    • Support Vector aggregator service: #295
    • Support External DNS: #294
    • Support PVC, LXC, Java, DNS, and Zabbix: #291
    • Support Opnsense: #288
    • Support Generic Subnet: #285
    • Support Erlang and Elixir: #275
    • Support Rocketchat, Mattermost, and Microsoft Teams: #268
    • Support Akamai: #267
    • Support Cert Manager and Lets Encrypt: #265
    • Support Ocelot: #263
    • Support Open Service Mesh: #260

    Fixed

    • Correct spelling of Traditional Server: #351
    • Onprem storage incorrect config: #345
    Source code(tar.gz)
    Source code(zip)
  • v0.17.0(Aug 27, 2020)

    Added

    • Support GCP Endpoints: #259
    • Support DroneCI and Atlantis (Terraform): #255
    • Support Okta: #254
    • Support OutScale provider: #251
    • Support Prometheus Operator: #253
    • Support Snowflake: #245
    • Support for CJK fonts + Replace ms-fonts with opensans: #242
    • Support Pushover: #241

    Fixed

    • Update bm, vm cases for OCI
    • Set a dummy filename to prevent raise error when both name and filename are not provided: #240
    Source code(tar.gz)
    Source code(zip)
  • v0.16.0(Jul 13, 2020)

    Breaking Changes

    The following import changes:

    | Old import path | New import path | | -------------------------------------------------- | ---------------------------------------------------------- | | from diagrams.onprem.logging import Logstash | from diagrams.elastic.elasticsearch import Logstash | | from diagrams.onprem.monitoring import Kibana | from diagrams.elastic.elasticsearch import Kibana | | from diagrams.onprem.search import Elasticsearch | from diagrams.elastic.elasticsearch import Elasticsearch |

    The previous icon was the company icon, not the elasticsearch product.

    For the company icon: from diagrams.elastic.saas import Elastic

    Added

    • Docker local development setup: #210
    • Support OpenStack #211
    • Support SQL, Druid and Databricks
    • Support Cloudinary: #218

    Fixed

    • Clean GCP resources: #228
    • Support DataDog, PaperTrail, Syslog, Rsyslog and Graylog: #222
    • Update all OCI icon set (bark and white): #205
    Source code(tar.gz)
    Source code(zip)
  • v0.15.0(Jun 28, 2020)

    Added

    • Support curvestyle option (ortho or curved)
    • Support Auth0, Cloudflare and Recombee: #209

    Fixed

    • Fix typo for PersistentVolume: #207
    • Fix misaligned label text position
    Source code(tar.gz)
    Source code(zip)
  • v0.14.0(Jun 17, 2020)

    Added

    • Support sagemaker for AWS provider: #204
    • Support ConcourseCI: #198
    • Support Tekton CLI: #199
    • Support more analytics tools for Onprem provider: #195
    • Support more resources for AWS provider: #192
    • Support kubernetes ecosystem: #188
    • Support Beats for ElasticStack provider: #153
    • Support more icons for Generic provider: #186
    • SUpport Opsgenie: #187
    • Support Tekton: #150
    • Support Generic provider: #171
    Source code(tar.gz)
    Source code(zip)
  • v0.13.1(Jun 2, 2020)

  • v0.13.0(May 31, 2020)

    Added

    • Support more DynamoDB and IAM nodes for AWS: #180
    • New provider elastic: #174
    • Support Rust: #179
    • Support Flux and Flagger: #147
    • New provider saas: #173
    • New provider firebase: #167
    • Support ZuulCI: #145
    Source code(tar.gz)
    Source code(zip)
  • v0.12.0(May 24, 2020)

    Added

    • Support GitlabCI: #166
    • Support Sentry: #165
    • Support Couchbase: #164
    • Support new IoT icons, and new Game, General and Robotics categories for AWS: #161
    • Support general icon set for Azure: #155
    • Support Fluent Bit: #154
    • Support integration services for Azure: #152
    • Support custom attribute options for Nodes: #151
    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(May 18, 2020)

    Added

    • Support programming provider (programming languages and frameworks): #112
    • Support NACL, Subnets, Route Table and VPC peering for AWS provider: #135
    • Support Loki: #139
    • Support Tableau and Metabase: #142
    • Support AWS Elemental Services: #149

    Fixed

    • Rename Cloudfront to CloudFront: #129
    Source code(tar.gz)
    Source code(zip)
  • v0.10.0(May 6, 2020)

  • v0.9.0(Apr 25, 2020)

    Added

    • Support Thanos: #99
    • Support AWS VPC Endpoint: #101
    • Support AWS VPC Router: #102
    • Support Teamcity: #103
    • Support Pomerium: #104
    • Support Ansible and AWX: #110

    Fixed

    • Replace MD5 Hash with UUID: #94
    • Verify Edge attributes exist before setting: #96
    Source code(tar.gz)
    Source code(zip)
  • v0.8.2(Apr 10, 2020)

  • v0.8.1(Apr 2, 2020)

  • v0.8.0(Mar 28, 2020)

    Added

    • Support Apache Beam: #66
    • Support PFSense and VyOS: #67
    • Support Polyaxon: #74
    • Support Spinnaker: #77
    • Support Git, GitLab and GitHub of onprem.vcs: #80
    • Support Dgraph, JanusGraph and Scylla of onprem.database: #84
    Source code(tar.gz)
    Source code(zip)
  • v0.7.4(Mar 14, 2020)

  • v0.7.3(Mar 10, 2020)

  • v0.7.2(Mar 9, 2020)

  • v0.7.0(Mar 9, 2020)

    Added

    • Customer engagement services for AWS: https://github.com/mingrammer/diagrams/pull/57
    • Edge attributes support: https://github.com/mingrammer/diagrams/pull/48
    Source code(tar.gz)
    Source code(zip)
  • v0.6.5(Mar 7, 2020)

  • v0.6.4(Feb 29, 2020)

  • v0.6.3(Feb 25, 2020)

  • v0.6.2(Feb 23, 2020)

  • v0.6.1(Feb 23, 2020)

Owner
MinJae Kwon
A green Gopher & Pythonista 🥳 I love computer science, system design, and automating things 💕
MinJae Kwon
An awesome list of AI for art and design - resources, and popular datasets and how we may apply computer vision tasks to art and design.

Awesome AI for Art & Design An awesome list of AI for art and design - resources, and popular datasets and how we may apply computer vision tasks to a

Margaret Maynard-Reid 20 Dec 21, 2022
Prophet is a tool to discover resources detailed for cloud migration, cloud backup and disaster recovery

Prophet is a tool to discover resources detailed for cloud migration, cloud backup and disaster recovery

null 22 May 31, 2022
An interactive tool with which to explore the possible imaging performance of candidate ngEHT architectures.

ngEHTexplorer An interactive tool with which to explore the possible imaging performance of candidate ngEHT architectures. Welcome! ngEHTexplorer is a

Avery Broderick 7 Jan 28, 2022
A little tool that uses LLVM to extract simple "what does this do" level instruction information from all architectures.

moirai: MOre InstRuctions and Information Backcronym. Anyway, this is a small project to extract useful instruction definitions from LLVM's platform d

null 2 Jul 30, 2022
HatAsm - a HatSploit native powerful assembler and disassembler that provides support for all common architectures

HatAsm - a HatSploit native powerful assembler and disassembler that provides support for all common architectures.

EntySec 8 Nov 9, 2022
A free and powerful system for awareness and research of the American judicial system.

CourtListener Started in 2009, CourtListener.com is the main initiative of Free Law Project. The goal of CourtListener.com is to provide high quality

Free Law Project 332 Dec 25, 2022
Waydroid is a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu.

Waydroid is a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu.

WayDroid 4.7k Jan 8, 2023
System Design Assignments as part of Arpit's System Design Masterclass

System Design Assignments The repository contains a set of problem statements around Software Architecture and System Design as conducted by Arpit's S

Relog 1.1k Jan 9, 2023
Magenta: Music and Art Generation with Machine Intelligence

Magenta is a research project exploring the role of machine learning in the process of creating art and music. Primarily this involves developing new

Magenta 18.1k Jan 5, 2023
A curses based mpd client with basic functionality and album art.

Miniplayer A curses based mpd client with basic functionality and album art. After installation, the player can be opened from the terminal with minip

Tristan Ferrua 102 Dec 24, 2022
A script to generate NFT art living on the Solana blockchain.

NFT Generator This script generates NFT art based on its desired traits with their specific rarities. It has been used to generate the full collection

Rude Golems 24 Oct 8, 2022
Displays Christmas-themed ASCII art

Christmas Color Scripts Displays Christmas-themed ASCII art. This was mainly inspired by DistroTube's Shell Color Scripts Screenshots ASCII Shadow Tex

null 1 Aug 9, 2022
Pixelarticons - Pixel Art Icons made simple for Flutter, powered by pixelarticons and fontify

Pixelarticons - Pixel Art Icons made simple for Flutter, powered by pixelarticons and fontify

lask 16 Dec 12, 2022
Nimbus - Open Source Cloud Computing Software - 100% Apache2 licensed

⚠️ The Nimbus infrastructure project is no longer under development. ⚠️ For more information, please read the news announcement. If you are interested

Nimbus 194 Jun 30, 2022
Cloud Native sample microservices showcasing Full Stack Observability using AppDynamics and ThousandEyes

Cloud Native Sample Bookinfo App Observability Bookinfo is a sample application composed of four Microservices written in different languages.

Cisco DevNet 13 Jul 21, 2022
A git extension for seeing your Cloud Build deployment

A git extension for seeing your Cloud Build deployment

Katie McLaughlin 13 May 10, 2022
Python samples for Google Cloud Platform products.

Google Cloud Platform Python Samples Python samples for Google Cloud Platform products. Setup Install pip and virtualenv if you do not already have th

Google Cloud Platform 6k Jan 3, 2023
Python interface to IEX and IEX cloud APIs

Python interface to IEX Cloud Referral Please subscribe to IEX Cloud using this referral code. Getting Started Install Install from pip pip install py

IEX Cloud 41 Dec 21, 2022
Media Cloud Outlet Filtering

Using ABYZ and Media-Bias Fact-Check outlet databases, I've provided outlet CSV files for both and scripts to intended to match Media Cloud files to respective outlets.

Stephen Scarano 1 Feb 2, 2022