In part1, we had an introduction about Domain-Driven-Design Tactical modeling. In this part, we will take a deep dive into one of the Tactical Modeling called value-objects.

we will know what are value objects?. what are value objects characteristics?. what are the benefits of value objects?. with code examples using Typescript.

What are value objects:

value objects are objects that identify values. and has no unique identity. Value types that measure, quantify, or describe things are easier to create, test, use, optimize, and maintain.

an example of values we can model it as value objects: person’s name full name composed of first name and…

As I’m working on one of my side projects. I have a feature that requires image/file uploading. and how to store them to the cloud with each Pros and Cons as far as I know. I will provide the code examples in the next articles as soon as I finish them. feel free to suggest or correct me as I’m learning ;).

Uploading Strategies:

1- upload files to server Hard Drive

2- upload files to server Hard Drive as temp then store them to cloud file storage

3- upload files from client to cloud file storage using pre-signed URLs

upload files to server Hard Drive:

uploading files to…

Does Your project qualify to use Domain-Driven-Design?

we can answer that question by answering the following questions created by “Vaughn Vernon”, each question we answer with yes will add points if we scored 7 or more points then we will need to use Domain-Driven Design.

Ready? Let’s Go.

1- does your application is completely data-centric and truly qualifies
for a pure CRUD solution, you don’t need DDD. In other words, if you can trust your users to insert data directly into a table, update it, and sometimes delete it? (0 point if yes).

2- does your system requires just 30…

In the previous part, we went through DDD Layers and Hexagonal Architecture. in this part we will learn about the CQRS pattern and why to use it.

CQRS stands for “Command Query Responsibility Segregation” which we can separate write models(Commands) from the reading model(Query).

ch4-p140 implementing domain-driven design [Vaughn Vernon]

Why using CQRS?

some times It can be difficult to query from Repositories all the data users need to view. This is especially so when user experience design creates views of data that cuts across a number of Aggregate types and instances. The more sophisticated your domain, the more this situation tends to occur. …

In the previous part, we went through DDD definitions . in this part we will go through how DDD layers are structured and Hexagonal Architecture.


Here we rigorously separate the various concerns of our application or system into well-defined layers.

ch4-p119 implementing domain-driven design [Vaughn Vernon]

Isolate the expression of the domain model and the business logic, and eliminate any dependency on infrastructure, user interface, or even application logic that is not business logic. Partition a complex program into layers. Develop a design within each layer that is cohesive and that depends only on the layers below. [Evans]

Responsible for showing information to the user and…

Domain-Driven Design is an approach to software development that centers the development of programming a domain model that has a rich understanding of the processes and rules of a domain.

“Domain” in Domain-Driven-Design refers to the “business logic” or “business problem” we want to solve with our solution.

Domain-centric Architecture

in Domain-Driven-Design our domain is the heart of our architecture. as we want to focus on the business logic excluding any other technical aspects

Domain-Driven-Design Main Parts

as we said that DDD is an approach to design software it consists of two parts:

1- Strategic modeling

2- Tactical modeling

The main objective is to define…

Ahmed Ibrahim

Software Developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store