# \#software-design

**URL:** https://forum.elixirforum.com/tag/software-design/645.md

[Latest](https://forum.elixirforum.com/latest.md) · [Categories](https://forum.elixirforum.com/categories.md) · [Tags](https://forum.elixirforum.com/tags.md)

---

## [Bond (Design by Contract for Elixir) - 1.14 released](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir-1-14-released/76411)

<div class="topic-metadata">

**Author:** [@jvoegele](https://forum.elixirforum.com/u/jvoegele)\
**Replies:** 0\
**Last updated:** [August 20, 2026, 11:52am UTC](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir-1-14-released/76411 "2026-08-20T11:52:42Z")

</div>

Bond brings Design by Contract to Elixir: preconditions, postconditions and invariants as executable specifications, checked at runtime and compiled out of production if you want them gone. The last update here covered …

---

## [Bond (Design by Contract for Elixir) - 1.7.0 released: reusable contracts & contract-driven testing](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir-1-7-0-released-reusable-contracts-contract-driven-testing/75754)

<div class="topic-metadata">

**Author:** [@jvoegele](https://forum.elixirforum.com/u/jvoegele)\
**Replies:** 1\
**Last updated:** [June 26, 2026, 10:09am UTC](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir-1-7-0-released-reusable-contracts-contract-driven-testing/75754 "2026-06-26T10:09:53Z")

</div>

Bond 1.7.0 is out. :tada: It’s been four minor releases since I last posted here (1.3.0), and the theme of that run is reuse and testing: contracts you can name and share, contracts that quantify over collections, and — …

---

## [Bond (Design by Contract for Elixir) - 1.3.0 released: contract inheritance & refinement](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir-1-3-0-released-contract-inheritance-refinement/75680)

<div class="topic-metadata">

**Author:** [@jvoegele](https://forum.elixirforum.com/u/jvoegele)\
**Replies:** 1\
**Last updated:** [June 15, 2026, 8:28pm UTC](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir-1-3-0-released-contract-inheritance-refinement/75680 "2026-06-15T20:28:01Z")

</div>

Bond 1.3.0 is out. :tada: The big story since the 1.0 release: Bond now does contract inheritance, and as of 1.3.0, Eiffel-style contract refinement. This is Design by Contract meeting the Liskov Substitution Principle —…

---

## [Bond (Design by Contract for Elixir) - 1.0.0 released](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir-1-0-0-released/75556)

<div class="topic-metadata">

**Author:** [@jvoegele](https://forum.elixirforum.com/u/jvoegele)\
**Replies:** 6\
**Last updated:** [June 15, 2026, 12:56pm UTC](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir-1-0-0-released/75556 "2026-06-15T12:56:54Z")

</div>

Bond 1.0.0 is out — the first stable release. :tada: After three release candidates and a good deal of dogfooding, Bond has reached 1.0.0. The SemVer stability guarantees described in the docs are now in force: the publ…

---

## [Bond (design by contract for Elixir) - 1.0.0-rc.1 released](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir-1-0-0-rc-1-released/75525)

<div class="topic-metadata">

**Author:** [@jvoegele](https://forum.elixirforum.com/u/jvoegele)\
**Replies:** 2\
**Last updated:** [June 2, 2026, 2:23am UTC](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir-1-0-0-rc-1-released/75525 "2026-06-02T02:23:23Z")

</div>

A little over 18 months ago I posted the original announcement for Bond — an early cut of a Design by Contract library for Elixir. The thread surfaced excellent feedback (thanks again to @sbuttgereit, @dimitarvp, @kataf…

---

## [What is the idiomatic shape for extensible keyword opts?](https://forum.elixirforum.com/t/what-is-the-idiomatic-shape-for-extensible-keyword-opts/75499)

<div class="topic-metadata">

**Author:** [@fuelen](https://forum.elixirforum.com/u/fuelen)\
**Replies:** 13\
**Last updated:** [June 1, 2026, 2:42pm UTC](https://forum.elixirforum.com/t/what-is-the-idiomatic-shape-for-extensible-keyword-opts/75499 "2026-06-01T14:42:18Z")

</div>

I’m working on a small library (GitHub - fuelen/mold: A tiny, zero-dependency parsing library for external payloads · GitHub) where schemas are plain data. Type options live in the 2nd element of the tuple: {:string, min…

---

## [Multi-warehouse Inventory Management with Ash](https://forum.elixirforum.com/t/multi-warehouse-inventory-management-with-ash/73332)

<div class="topic-metadata">

**Author:** [@wallyfoo](https://forum.elixirforum.com/u/wallyfoo)\
**Replies:** 8\
**Last updated:** [November 17, 2025, 3:34pm UTC](https://forum.elixirforum.com/t/multi-warehouse-inventory-management-with-ash/73332 "2025-11-17T15:34:37Z")

</div>

I’m rebuilding an aging node online store with a mongo backend into an Elixir project with Postgres for the data layer. Since I can’t do anything the easy way, I’ve also decided to eschew my own patterns and use Ash to m…

---

## [Bond - Design by Contract for Elixir](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir/67317)

<div class="topic-metadata">

**Author:** [@jvoegele](https://forum.elixirforum.com/u/jvoegele)\
**Replies:** 17\
**Last updated:** [November 12, 2024, 3:00pm UTC](https://forum.elixirforum.com/t/bond-design-by-contract-for-elixir/67317 "2024-11-12T15:00:29Z")

</div>

Announcing Bond, Design by Contract for Elixir Bond provides support for contract programming (also known as “Design by Contract”) for Elixir. The primary goal for Bond is to provide the most feature-complete and thoro…

---

## [Advice on the use of generic Oban workers](https://forum.elixirforum.com/t/advice-on-the-use-of-generic-oban-workers/64921)

<div class="topic-metadata">

**Author:** [@spacebat](https://forum.elixirforum.com/u/spacebat)\
**Replies:** 2\
**Last updated:** [July 15, 2024, 4:14pm UTC](https://forum.elixirforum.com/t/advice-on-the-use-of-generic-oban-workers/64921 "2024-07-15T16:14:07Z")

</div>

Cross-posting from slack here: In my first project that uses Oban, I found myself writing a GenericWorker module that takes as arguments an MFA tuple and calls Kernel.apply on that. Now I see upsides as well as downside…

---

## [Elixir mono-repo best practices](https://forum.elixirforum.com/t/elixir-mono-repo-best-practices/54403)

<div class="topic-metadata">

**Author:** [@pnezis](https://forum.elixirforum.com/u/pnezis)\
**Replies:** 21\
**Last updated:** [May 13, 2024, 8:17pm UTC](https://forum.elixirforum.com/t/elixir-mono-repo-best-practices/54403 "2024-05-13T20:17:56Z")

</div>

We are currently in the process of restructuring our codebase. Till now we follow the monolith way (well structured though) but we have started facing scaling issues (especially on CI pipelines). Umbrella is not an optio…

---

## [Dependencies and programmatically avoiding circular references](https://forum.elixirforum.com/t/dependencies-and-programmatically-avoiding-circular-references/60707)

<div class="topic-metadata">

**Author:** [@sbuttgereit](https://forum.elixirforum.com/u/sbuttgereit)\
**Replies:** 3\
**Last updated:** [January 3, 2024, 5:44pm UTC](https://forum.elixirforum.com/t/dependencies-and-programmatically-avoiding-circular-references/60707 "2024-01-03T17:44:49Z")

</div>

This is going to be an oddball question and not really something that others are going to commonly encounter. I’m also pretty sure that what I’m going to be asking about is simply not possible… but as I prove time and t…

---

## [Dependency injection & design by interface / SMI](https://forum.elixirforum.com/t/dependency-injection-design-by-interface-smi/54698)

<div class="topic-metadata">

**Author:** [@jTy](https://forum.elixirforum.com/u/jTy)\
**Replies:** 12\
**Last updated:** [March 27, 2023, 3:29pm UTC](https://forum.elixirforum.com/t/dependency-injection-design-by-interface-smi/54698 "2023-03-27T15:29:22Z")

</div>

Hi there! I’ve been playing with Elixir for a while and stumbled upon dependency injection. The topic comes naturally to me as having C# background where it’s pretty-well known, especially amongst professionals. Since we…

---

## [Software design: processing remote collection of items via paginated API, while properly handling errors](https://forum.elixirforum.com/t/software-design-processing-remote-collection-of-items-via-paginated-api-while-properly-handling-errors/23212)

<div class="topic-metadata">

**Author:** [@david\_ex](https://forum.elixirforum.com/u/david_ex)\
**Replies:** 13\
**Last updated:** [December 6, 2022, 3:34pm UTC](https://forum.elixirforum.com/t/software-design-processing-remote-collection-of-items-via-paginated-api-while-properly-handling-errors/23212 "2022-12-06T15:34:59Z")

</div>

What I’m struggling with I want to process a collection of items that are remote. These items aren’t all available in a single request: to get all items, multiple requests will have to be made (e.g. via a paginated api).…

---

## [Is it really okay do deal with schemas cross-context?](https://forum.elixirforum.com/t/is-it-really-okay-do-deal-with-schemas-cross-context/49851)

<div class="topic-metadata">

**Author:** [@elt547](https://forum.elixirforum.com/u/elt547)\
**Replies:** 1\
**Last updated:** [August 29, 2022, 1:48am UTC](https://forum.elixirforum.com/t/is-it-really-okay-do-deal-with-schemas-cross-context/49851 "2022-08-29T01:48:39Z")

</div>

Say that I have two contexts with the following schemas. Organizations pretty much own accounts and profiles are attached to accounts. Organizations Organization Users Profile Account Is it okay for me to list a…

---

## [How would you build a zapier clone in Elixir?](https://forum.elixirforum.com/t/how-would-you-build-a-zapier-clone-in-elixir/40445)

<div class="topic-metadata">

**Author:** [@dopomecana](https://forum.elixirforum.com/u/dopomecana)\
**Replies:** 4\
**Last updated:** [June 16, 2021, 2:15am UTC](https://forum.elixirforum.com/t/how-would-you-build-a-zapier-clone-in-elixir/40445 "2021-06-16T02:15:36Z")

</div>

I recently had a interview where I had to design a zapier clone. From the feedback I understood that my solution was not very elixirish. I think what am I missing is the big picture thinking in Elixir. How would you gu…

---

## [Dealing with private and public function default conflicts](https://forum.elixirforum.com/t/dealing-with-private-and-public-function-default-conflicts/39683)

<div class="topic-metadata">

**Author:** [@threeaccents](https://forum.elixirforum.com/u/threeaccents)\
**Replies:** 8\
**Last updated:** [May 14, 2021, 2:54pm UTC](https://forum.elixirforum.com/t/dealing-with-private-and-public-function-default-conflicts/39683 "2021-05-14T14:54:23Z")

</div>

I wanted to see how others deal with private and public function defaults conflict. In my context I like to have public functions that take the current\_user from the request what ever other arguments are needed with a “m…

---

## [A second opinion on importing multiple large XML Files](https://forum.elixirforum.com/t/a-second-opinion-on-importing-multiple-large-xml-files/36740)

<div class="topic-metadata">

**Author:** [@andrewnclark](https://forum.elixirforum.com/u/andrewnclark)\
**Replies:** 5\
**Last updated:** [January 10, 2021, 6:31pm UTC](https://forum.elixirforum.com/t/a-second-opinion-on-importing-multiple-large-xml-files/36740 "2021-01-10T18:31:56Z")

</div>

I’m fairly new to Elixir/Phoenix and just wanted some second opinions on my approach; as a side-project being developed by myself in a language non of my colleagues are familiar with I’m missing the ability to bounce ide…

---

## [Question on working with dates and recurring tasks](https://forum.elixirforum.com/t/question-on-working-with-dates-and-recurring-tasks/36027)

<div class="topic-metadata">

**Author:** [@KekKekington](https://forum.elixirforum.com/u/KekKekington)\
**Replies:** 0\
**Last updated:** [December 7, 2020, 1:52am UTC](https://forum.elixirforum.com/t/question-on-working-with-dates-and-recurring-tasks/36027 "2020-12-07T01:52:15Z")

</div>

Hello everyone! I’ve started working on a new project for a client where I have complete freedom as to how to design the system and which technologies to use. Naturally, I selected Elixir/Phoenix for the backend but I’ve…

---

## [Project structure and layering](https://forum.elixirforum.com/t/project-structure-and-layering/34612)

<div class="topic-metadata">

**Author:** [@pedromtavares](https://forum.elixirforum.com/u/pedromtavares)\
**Replies:** 23\
**Last updated:** [September 29, 2020, 5:07pm UTC](https://forum.elixirforum.com/t/project-structure-and-layering/34612 "2020-09-29T17:07:49Z")

</div>

Hey everyone, After some discussions here on the forum, I decided to write a blog post about structuring a Phoenix app with a big focus on properly layering your domains: Blazing with Phoenix: Project Structure - DEV Co…

---

## [Broadway pipelines questions and best practices](https://forum.elixirforum.com/t/broadway-pipelines-questions-and-best-practices/34368)

<div class="topic-metadata">

**Author:** [@pnezis](https://forum.elixirforum.com/u/pnezis)\
**Replies:** 0\
**Last updated:** [September 14, 2020, 7:15pm UTC](https://forum.elixirforum.com/t/broadway-pipelines-questions-and-best-practices/34368 "2020-09-14T19:15:50Z")

</div>

I am using broadway lately (which by the way is a pleasure to work with) for some data pipelines and I am wondering if the approaches I have taken are the optimal ones. Context The basic workflow is: Read messages fro…

---

## [Writing modular / composable phoenix code](https://forum.elixirforum.com/t/writing-modular-composable-phoenix-code/31019)

<div class="topic-metadata">

**Author:** [@magosi](https://forum.elixirforum.com/u/magosi)\
**Replies:** 7\
**Last updated:** [April 27, 2020, 4:16pm UTC](https://forum.elixirforum.com/t/writing-modular-composable-phoenix-code/31019 "2020-04-27T16:16:59Z")

</div>

Hi, my current Phoenix project involves a website with a lot of different functionality, like a digital store, chat system, file uploads, blog posts, comments, etc. How can I go about developing this project so that each…

---

## [Diagramming/Modeling](https://forum.elixirforum.com/t/diagramming-modeling/22983)

<div class="topic-metadata">

**Author:** [@fun2src](https://forum.elixirforum.com/u/fun2src)\
**Replies:** 10\
**Last updated:** [November 27, 2019, 7:44pm UTC](https://forum.elixirforum.com/t/diagramming-modeling/22983 "2019-11-27T19:44:52Z")

</div>

Hi all, I’m trying to choose a modeling tool (free/opensource) for describing a system written in Elixir. I’ll use UML/C4-Model. I need a good tool compatible with Linux/MacOS. C4 model C4-PlantUML??

---

## [Looking for an easy way to set calculations from outside of source code](https://forum.elixirforum.com/t/looking-for-an-easy-way-to-set-calculations-from-outside-of-source-code/25731)

<div class="topic-metadata">

**Author:** [@dkuku](https://forum.elixirforum.com/u/dkuku)\
**Replies:** 6\
**Last updated:** [October 1, 2019, 2:26am UTC](https://forum.elixirforum.com/t/looking-for-an-easy-way-to-set-calculations-from-outside-of-source-code/25731 "2019-10-01T02:26:10Z")

</div>

I wonder about a design pattern that may be used for setting for the function execution pipeline. Lets say i have users from different countries and i want to calculate salary tax - the calculation changes for every cou…

---

## [Tools for software diagrams](https://forum.elixirforum.com/t/tools-for-software-diagrams/316)

<div class="topic-metadata">

**Author:** [@sashaafm](https://forum.elixirforum.com/u/sashaafm)\
**Replies:** 24\
**Last updated:** [August 15, 2019, 11:29pm UTC](https://forum.elixirforum.com/t/tools-for-software-diagrams/316 "2019-08-15T23:29:26Z")

</div>

I need to draw/build some diagrams for my master’s thesis and I tried using Visio 2016 but I didn’t really like the way the program works and how the diagrams look. I always see these conference talks and presentations w…

---

## [What is the "right way" to get data from another bounded context?](https://forum.elixirforum.com/t/what-is-the-right-way-to-get-data-from-another-bounded-context/17119)

<div class="topic-metadata">

**Author:** [@voughtdq](https://forum.elixirforum.com/u/voughtdq)\
**Replies:** 3\
**Last updated:** [October 10, 2018, 2:28pm UTC](https://forum.elixirforum.com/t/what-is-the-right-way-to-get-data-from-another-bounded-context/17119 "2018-10-10T14:28:23Z")

</div>

I have an Accounts application that manages core business logic. There is an Organization model in the Accounts application that represents a single instance of a real world client. I’m now working on a Billing applicat…

---

## [Is GenStage the right tool for the job? Importing data from multiple sources](https://forum.elixirforum.com/t/is-genstage-the-right-tool-for-the-job-importing-data-from-multiple-sources/14570)

<div class="topic-metadata">

**Author:** [@jdj\_dk](https://forum.elixirforum.com/u/jdj_dk)\
**Replies:** 2\
**Last updated:** [June 6, 2018, 1:58pm UTC](https://forum.elixirforum.com/t/is-genstage-the-right-tool-for-the-job-importing-data-from-multiple-sources/14570 "2018-06-06T13:58:30Z")

</div>

I’ve been working on Bitboard for quite some time. It’s a great side project, and I’ve learned quite a bit doing it. Bitboard lets you manage Bitbucket issues using boards and cards. One of the first things I developed …
