## Module Development Best Practices & Conventions

### Introduction

This document describes the **best practices** and **conventions** for who want to develop **modules** that satisfies the following specifications:

* Develop the module that applies the **Domain Driven Design** patterns & best practices.
* Develop the module as **DBMS and ORM independent**.
* Develop the module that can be used as a **remote service / microservice** as well as can be integrated to a **monolithic** application.

Also, this guide is mostly usable for the **application development**.

### Guides

* Overall
  * [Module Architecture](Module-Architecture.md)
* Domain Layer
  * [Entities](Entities.md)
  * [Repositories](Repositories.md)
  * [Domain Services](Domain-Services.md)
* Application Layer
  * [Application Services](Application-Services.md)
  * [Data Transfer Objects](Data-Transfer-Objects.md)
* Data Access
  * [Entity Framework Core Integration](Entity-Framework-Core-Integration.md)
  * [MongoDB Integration](MongoDB-Integration.md)

