Skip to content

cassiobotaro/modeloC4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1b2e71e · Mar 29, 2024

History

56 Commits
Mar 29, 2024
Mar 29, 2024
Mar 17, 2023
Mar 21, 2023
Mar 29, 2024
Mar 29, 2024
Mar 29, 2024
Mar 29, 2024
Mar 29, 2024
Mar 21, 2023
Mar 29, 2024
Mar 29, 2024
Mar 29, 2024
Apr 25, 2023
Nov 18, 2021
Mar 29, 2024
Oct 3, 2023

Repository files navigation

Modelo C4 para documentação de arquiteturas

Update: Uma atualização foi feita no repositório e os modelos foram reescritos utilizando a ferramenta Structurizr Lite.

Este repositório contém todos os diagramas contidos na apresentação do modelo C4.

PlantUML foi utilizado em conjunto com C4-PlantUML para gerar os diagramas.

Gerando os diagramas

Structurizr lite

Escrevi uma função para facilitar a utilização do comando:

# structurizr
function structurizr() {
    readonly file=${1:?"The workspace filename must be specified."}
    if [[ "$file" == *.* ]]; then
        echo "The workspace filename should not contains a file extension."
        return 1
    fi
    if [[ !  -f "./structurizr.properties" ]]; then
        echo "structurizr.autoRefreshInterval=2000" > structurizr.properties
    fi
    docker run --rm -it \
        -p 8080:8080 \
        -u $(id -u ${USER}):$(id -g ${USER}) \
        -v "$PWD":/usr/local/structurizr/ \
        -e STRUCTURIZR_WORKSPACE_FILENAME=$file \
            structurizr/lite
}

Ela será invocada da seguinte maneira:

structurizr nome_do_arquivo_sem_extensão

Para exportar os arquivos em png ou svg, mantenha a instância do structurizr rodando e utilize a seguinte função descrita abaixo.

function export_c4(){
    readonly format=${1:?"The format must be specified."}
    [ ! -f export-diagram.js ] && wget https://github.com/cassiobotaro/modeloC4/raw/main/export-diagram.js
    text=$(docker run -i --init --cap-add=SYS_ADMIN --net=host --name=exporter ghcr.io/puppeteer/puppeteer:latest node -e "$(cat export-diagrams.js)"  "" "http://localhost:8080" "$format")
    files=($(echo "$text" | grep -o "\S*\.$format"))
    for file in "${files[@]}"
    do
        docker cp exporter:/home/pptruser/"$file" .
    done
    docker rm exporter
}

Ela será invocada da seguinte maneira:

export_c4 png

PlantUML

O VS Code possui um plugin para PlantUML que pode ser encontrado na marketplace: PlantUML for Visual Studio Code.

Caso queira rodar localmente será necessário instalar o Graphviz. No sistema operacional Ubuntu o comando é:

sudo apt-get install graphviz openjdk-17-jre

Os diagramas também podem ser gerados utilizando o servidor remoto: http://www.plantuml.com/plantuml/uml/.

Abra os arquivos de extensão .puml ou copie seu conteúdo para o editor ou navegador.

Caso esteja utilizando a versão online, clique no botão Render para gerar a imagem.

Se estiver rodando localmente, aperte ALT + D para ter uma pré visualização, ou CTRL + SHIFT + P e selecione a opção de exportar a imagem ou pré visualização.