Structurizr for the `buildzr`s 🧱⚒️
Project description
Structurizr for the buildzrs 🧱⚒️
buildzr is a Structurizr authoring tool for Python programmers. It allows you to declaratively or procedurally author Structurizr models and diagrams.
If you're not familiar with Structurizr, it is both an open standard (see Structurizr JSON schema) and a set of tools for building software architecture diagrams as code. Structurizr derives its architecture modeling paradigm based on the C4 model, the modeling language for describing software architectures and their relationships.
In Structurizr, you define architecture models and their relationships first. And then, you can re-use the models to present multiple perspectives, views, and stories about your architecture.
buildzr supercharges this workflow with Pythonic syntax sugar and intuitive APIs that make modeling as code more fun and productive.
Install
pip install buildzr
Quick Example
from buildzr.dsl import (
Workspace,
SoftwareSystem,
Person,
Container,
SystemContextView,
ContainerView,
desc,
Group,
StyleElements,
)
with Workspace('w') as w:
# Define your models (architecture elements and their relationships).
with Group("My Company") as my_company:
u = Person('Web Application User')
webapp = SoftwareSystem('Corporate Web App')
with webapp:
database = Container('database', tags={'db'})
api = Container('api')
api >> ("Reads and writes data from/to", "http/api") >> database
with Group("Microsoft") as microsoft:
email_system = SoftwareSystem('Microsoft 365')
u >> [
desc("Reads and writes email using") >> email_system,
desc("Create work order using") >> webapp,
]
webapp >> "sends notification using" >> email_system
# Define the views.
SystemContextView(
software_system_selector=webapp,
key='web_app_system_context_00',
description="Web App System Context",
auto_layout='lr',
)
ContainerView(
software_system_selector=webapp,
key='web_app_container_view_00',
auto_layout='lr',
description="Web App Container View",
)
# Stylize the views.
StyleElements(
on=[u],
shape='Person',
background='blue',
)
StyleElements(
on=['db'],
shape='Cylinder'
)
# Export to JSON.
w.to_json('workspace.json')
Getting Started
Ready to dive in? Check out the Quick Start Tutorial and User Guides.
Why use buildzr?
✅ Intuitive Pythonic Syntax: Use Python's context managers (with statements) to create nested structures that naturally mirror your architecture's hierarchy. See the example below.
✅ Programmatic Creation: Use buildzr's DSL APIs to programmatically create C4 model architecture diagrams. Great for automation!
✅ Advanced Styling: Style elements beyond just tags --- target by direct reference, type, group membership, or custom predicates for fine-grained visual control. Just take a look at Styles!
✅ Type Safety: Write Structurizr diagrams more securely with extensive type hints and Mypy support.
✅ Standards Compliant: Stays true to the Structurizr JSON schema standards. buildzr uses datamodel-code-generator to automatically generate the low-level representation of the Workspace model.
✅ Rich Toolchain: Uses the familiar Python programming language and its rich toolchains to write software architecture models and diagrams!
Project Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file buildzr-0.0.29.tar.gz.
File metadata
- Download URL: buildzr-0.0.29.tar.gz
- Upload date:
- Size: 91.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2f91d7bac9faff7ef5c06aeb59d2ce6c06ea041be0f7caadd6689d31610341a
|
|
| MD5 |
97f00d7093d996acd1c74d7d16cc3950
|
|
| BLAKE2b-256 |
549f3924e3ca3a436674b5e546d61cffee97206c67138a6ba7652475a5ed6a04
|
File details
Details for the file buildzr-0.0.29-py3-none-any.whl.
File metadata
- Download URL: buildzr-0.0.29-py3-none-any.whl
- Upload date:
- Size: 20.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
951e9ab8d6dc4b56fe8f4798d4c0fb873757f334f554449d8a32def828eb94b0
|
|
| MD5 |
5a69d5044a712bd102bcdbef3d1f68f6
|
|
| BLAKE2b-256 |
40ab5b3241edd6318b856b4e2a0cf22eea6354f8e908e4ee10f6e2433e5cc5aa
|