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
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.
6
hauleth
When needed I use PlantUML and/or GraphViz and generate these diagrams:
- Module dependecy diagram
mix xref graph --format dot && dot -Tsvg -O xref_graph.dot - ERD diagram via
pg_graph - Sequence diagrams for business processes and messaging within application
- Usecase diagrams for business logic on high level
- State diagrams (rarely) when I need FSM
5
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.
4
Popular in Discussions
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
I wanted to capitalize a string, and tried using String.capitalize().
That generally works well, until you try to capitalize a word like...
New
Anybody knows a comprehensive comparison of Django and Phoenix, thanks for the help.
Where are they similar?
Where do they differ the m...
New
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
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
New
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
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
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
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
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
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
I have an umbrella app.
Some of the apps inside depend on other apps in the umbrella, unsurprisingly.
I’m writing a test for one of the...
New
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
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
In templates/appointment/index.html.eex:
<%= for appointment <- @appointments do %>
<tr>
<td><%= appoi...
New
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
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
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
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
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...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








