@abcdw I regularly use PlantUML (https://plantuml.com/) to describe the architecture of my projects and recommend it to my students as the tool for creating diagrams in their graduation projects.
And since I'm an FSM (Finite-State Machines) devotee, I wrote a state machine compiler in Scheme that turns PlantUML state diagrams into working GNU Guile (Scheme) code:
https://github.com/artyom-poptsov/guile-smc