Modeling a Domain From Scratch Using Domain-Driven Design (DDD)

📰 Medium · Programming

Stop writing data bags. Start writing software that actually understands your business. Continue reading on Medium »

Published 20 Apr 2026

Full Article

Title: Modeling a Domain From Scratch Using Domain-Driven Design (DDD)

URL Source: https://medium.com/@mariammaurice/modeling-a-domain-from-scratch-using-domain-driven-design-ddd-f450286ab648?source=rss------programming-5

Published Time: 2026-04-20T18:01:01Z

Markdown Content:
# Modeling a Domain From Scratch Using Domain-Driven Design (DDD) | by Mori | Apr, 2026 | Medium

[Sitemap](https://medium.com/sitemap/sitemap.xml)

[Open in app](https://play.google.com/store/apps/details?id=com.medium.reader&referrer=utm_source%3DmobileNavBar&source=post_page---top_nav_layout_nav-----------------------------------------)

Sign up

[Sign in](https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2F%40mariammaurice%2Fmodeling-a-domain-from-scratch-using-domain-driven-design-ddd-f450286ab648&source=post_page---top_nav_layout_nav-----------------------global_nav------------------)

[](https://medium.com/?source=post_page---top_nav_layout_nav-----------------------------------------)

Get app

[Write](https://medium.com/m/signin?operation=register&redirect=https%3A%2F%2Fmedium.com%2Fnew-story&source=---top_nav_layout_nav-----------------------new_post_topnav------------------)

[Search](https://medium.com/search?source=post_page---top_nav_layout_nav-----------------------------------------)

Sign up

[Sign in](https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2F%40mariammaurice%2Fmodeling-a-domain-from-scratch-using-domain-driven-design-ddd-f450286ab648&source=post_page---top_nav_layout_nav-----------------------global_nav------------------)

![Image 1](https://miro.medium.com/v2/resize:fill:32:32/1*dmbNkD5D-u45r44go_cf0g.png)

Member-only story

# Modeling a Domain From Scratch Using Domain-Driven Design (DDD)

## _Stop writing data bags. Start writing software that actually understands your business._

[![Image 2: Mori](https://miro.medium.com/v2/resize:fill:32:32/1*yfuFC8vbEnmjAf4uPU6f-Q.jpeg)](https://medium.com/@mariammaurice?source=post_page---byline--f450286ab648---------------------------------------)

[Mori](https://medium.com/@mariammaurice?source=post_page---byline--f450286ab648---------------------------------------)

Follow

14 min read

·

1 hour ago

[](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fp%2Ff450286ab648&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40mariammaurice%2Fmodeling-a-domain-from-scratch-using-domain-driven-design-ddd-f450286ab648&user=Mori&userId=3049ad8ad398&source=---header_actions--f450286ab648---------------------clap_footer------------------)

[](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Ff450286ab648&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40mariammaurice%2Fmodeling-a-domain-from-scratch-using-domain-driven-design-ddd-f450286ab648&source=---header_actions--f450286ab648---------------------bookmark_footer------------------)

[Listen](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2Fplans%3Fdimension%3Dpost_audio_button%26postId%3Df450286ab648&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40mariammaurice%2Fmodeling-a-domain-from-scratch-using-domain-driven-design-ddd-f450286ab648&source=---header_actions--f450286ab648---------------------post_audio_button------------------)

Share

Press enter or click to view image in full size

![Image 3](https://miro.medium.com/v2/resize:fit:700/1*zifctBB44JcEPg-JgAnr0A.png)

## The Anemic Model Epidemic

You’ve seen it. A “domain model” that’s just a class with properties and a bunch of `null` checks scattered across services:

public class Order

{

public int Id { get; set; }

public int CustomerId { get; set; }

public List<OrderItem> Items { get; set; } = new();

public decimal Total { get; set; }

public string Status { get; set; } = "Pending";

}
Then the “business logic” lives somewhere else:

public async Task AddItemToOrder(int orderId, int productId, int quantity)

{

var or
Read full article → ← Back to Reads