WildYorkies

WildYorkies

What do you use to conceptually design an Elixir system/app?

I know everyone is probably familiar with UML for designing OO systems.

But how do you guys draw out or dream up Elixir/OTP systems?

Most Liked

peerreynders

peerreynders

Courtesy of Design and Build Great Web APIs I came across https://www.websequencediagrams.com/

You input a text representation like

home->+WIP: startOnboarding(identifier)
WIP->+customerData: collectCustomerData(identifier, givenName, familyName, email, telephone, text)
customerData-->-WIP: saveToWIP(identifier, givenName, familyName, email, telephone, text)
WIP->+accountData: collectAccountData(identifier, discount, creditLimit)
accountData-->-WIP: saveToWIP(identifier, discount, creditLimit)
WIP->+activityData: collectActivityData(identifier, salesRepId, callDate)
activityData-->-WIP: saveToWIP(identifier, salesRepId, callDate)
WIP->+finalizeWIP: completeOnBoarding(identifier)
finalizeWIP-->-home: goHome
WIP->+cancelWIP: abandonOnBoarding(identifier)
cancelWIP-->-home: goHome

that gets rendered as a sequence diagram.

In many cases that might be good enough to visualize the chatter between processes for a particular scenario.

hauleth

hauleth

When needed I use PlantUML and/or GraphViz and generate these diagrams:

gregvaughn

gregvaughn

Sequence diagrams were always the most useful of UML diagrams, IMHO. Those apply to message passing between BEAM processes just fine when diagrams are necessary. IIRC there’s even a tool in the core erlang/OTP runtime that will generate them.

Where Next?

Popular in Discussions Top

PragTob
Hello everyone, I know we had quite some threads (read through lots of them) about background job processing but it remains a hotly deba...
New
mikl
I wanted to capitalize a string, and tried using String.capitalize(). That generally works well, until you try to capitalize a word like...
New
Nvim
Anybody knows a comprehensive comparison of Django and Phoenix, thanks for the help. Where are they similar? Where do they differ the m...
New
cvkmohan
The upcoming Phoenix 1.6 release looks very interesting. Became a habit to watch the commits - and - what they are bringing in. phx.gen...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 53690 245
New
AstonJ
If a newbie asked you about Phoenix Contexts, how would you explain the basics to them? Feel free to be as concise or in-depth as you li...
New
Ankhers
Just a little information upfront. Generally speaking, if I feel like I need to either break a pipe chain or use an anonymous function in...
New
crabonature
I’m still quite new to Elixir. As I understand we got in Elixir “multi guards” as convention to simplify one large guard with or’s?: de...
New
restack_oslo
Hello, Please pardon me for any faux paux. I am 46 and this is my first time on a forum of any kind. I wanted to to get answers from tho...
New
RudManusachi
What configs will make sense to put to runtime.exs? – A bit of how I configure apps: I have generic configs in config/config.exs, dev...
New

Other popular topics Top

malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
Lily
In templates/appointment/index.html.eex: <%= for appointment <- @appointments do %> <tr> <td><%= appoi...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 126479 1222
New

We're in Beta

About us Mission Statement