Search⌘ K
AI Features

Use Case

Explore how to implement a delivery tracking service as a use case in clean architecture. Understand how to abstract data retrieval and presentation, creating modular, pluggable components that keep technical details encapsulated, allowing easier maintenance and adaptability.

To see how we might organize the components of our application, and how the previous concepts might work in practice, let’s explore an example.

The use case is that there is an application for delivering food, and this application has a specific service for tracking the status of each delivery at its different stages. We are going to focus only on this particular service, regardless of how the rest of the application might appear. The service has to be really simple—a REST API that, when asked about the status of a particular order, will return a JSON response with a descriptive message.

We are going to assume that the information about each particular order is stored in a database, but this detail should not matter at all.

Our service has two main concerns for now: getting the information about a particular order (from wherever this might be stored), and presenting this information in a useful way to the clients (in this case, delivering the results in JSON format, exposed as a web service).

As the application has to be maintainable and extensible, we want to keep these two concerns as hidden as possible and focus on the main logic. Therefore, these two details are abstracted and encapsulated into Python packages that the main application with the core logic will use, as shown below.

A service application (named "Web service") that makes use of two Python packages, one of which connects to a database
A service application (named "Web service") that makes use of two Python packages, one of which connects to a database

In the following sections, we briefly demonstrate how the code might appear, mainly in terms of the packages, and how to create services from these, in order to finally see what conclusions we can infer.

The code

The idea of creating Python packages in this example is to illustrate how abstracted and isolated components can be made, in order to work ...