DEV Community

Yoel Benítez Fonseca
Yoel Benítez Fonseca

Posted on

Clean architecture and Python Polylith - a real example

This is the first in a series of posts where I will hopefully try to combine the concepts of Clean Architecture and Polylith by building a real-world example with Python.

I believe that both philosophies are not incompatible. While the clean architecture principles provide a way to achieve separation of concerns, Polylith allows us to manage the code repository and dependencies efficiently.

I'll demonstrate how to combine those two by building one or more applications using Python polylith in the repository https://github.com/ybenitezf/ca-todo-app

For the initial setup, I used the Cookiecutter template from my previous article to initialize the solution repository. I will be creating merge requests to add features to the solution, for the moment this is the firsts pull request:

https://github.com/ybenitezf/ca-todo-app/pull/1

The example application domain

Let's use the ToDo example, we will borrow the product requirements from this article:

Gordon is responsible of the development of RHI’s clinical reports. He is constantly dealing with customer update requests required to improve the efficacy of the reports. Lately he has been dealing with a high volume of requests. He has been having trouble tracking his progress.

His main objective is to complete all of the requests as fast as possible. His main goal is to feel a degree of accomplished at the end of every work day.

Product Requirements

To help Gordon with his work, we will write a ToDo list application for Gordon to keep track of his tasks and progress. By marking things as done, we hope he can feel accomplished at the end of the day. Our application will also provide a storage mechanism so that we can save Gordon's progress.

The use cases:

  • View the todo list, applying some filter's optionally
  • Add new todo item
  • Complete item
  • Edit item

Conclusion

At this moment, we have:

  • The problem/application domain: a todo application
  • The basic set of tools that we will be using: Python and python-polylith

In future articles, we will add the solution and expand the domain a little to explain and demonstrate some concepts.

See ya.

Top comments (0)