Real-world open-source project based on .NET with Microservices, DDD, BDD and Testing concepts
Tags: opensource, ddd, microservices, blazor
Published: 2023-10-29 21:36:28


![TaskoMask User Panel Screenshots](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zs1ke018lpku177ylg12.jpg)
When learning about advanced concepts like Microservices, DDD, CQRS, Event Sourcing, BDD, and TDD, you often find plenty of resources on theory and design. However, practical implementation guidance is scarce. After reading a book, you might wonder, ‘Now what? How do I apply these concepts in a real project?

## What’s the problem ?
The challenge with advanced concepts like Microservices, DDD, CQRS, Event Sourcing, BDD, and TDD is that books and articles can’t provide comprehensive implementation details due to the complexity of real-world projects. If you’re not fortunate enough to learn through company projects, you end up searching the web for examples. However, most examples are too simplistic, often featuring a single entity like ‘customer.’ Real-world projects present complex challenges that these simple examples can’t address.

## Here is my solution

Experienced developers often implement advanced concepts in companies, making that knowledge hard to access. Searching for open-source examples isn’t always sufficient. The best way to learn is by starting a real-world project, solving problems step by step. I’ve created [TaskoMask](https://github.com/hamed-shirbandi/TaskoMask), a real-world open-source project, to help accelerate your learning journey. If it helps, feel free to reach out and share your success!

## What is TaskoMask?
TaskoMask is a free and open-source task management system built on .Net. It’s available on [GitHub](https://github.com/hamed-shirbandi/TaskoMask) and [online](http://taskomask.ir/) for testing. Our primary goal is to serve as a real-world example project for developers seeking practical challenges.

## Documentation
TaskoMask is fully documented, with a clear roadmap on GitHub. If you have questions or encounter issues, don’t hesitate to create an issue on the project’s GitHub repository — I’m there to assist you!.

> [Architecture Documentation](https://github.com/hamed-shirbandi/TaskoMask/wiki/Architecture-Documentation)
> [Domain Documentation](https://github.com/hamed-shirbandi/TaskoMask/wiki/Domain-Documentation)

## Design Strategies
I have designed TaskoMask by following the bellow approaches and methodologies, Patterns, etc.

**Microservices**, **DDD**, **CQRS**, **Event Sourcing**, main concepts of **TDD** and **BDD**, **Vertical Slice Architecture**, etc. You can see the complete items on the [project repository](https://github.com/hamed-shirbandi/TaskoMask) documentations.

Here are the development and deployment architecture diagrams you can see to understand the design strategies and implementation techniques.

![TaskoMask Deployment Architecture](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/us8f3clzuzly73dhugfb.jpg)

![TaskoMask Development Architecture](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a6i04y06izzf5ehyybx0.jpg)

## Implementation Details

Here is a list of tools and technologies I have used for implementing the project:

**.Net**, **C#**, ASP.NET **Web API**, ASP.NET **MVC**, **Blazor** WebAssembly, Blazor Server, **MongoDB**, **Redis**, **xUnit**, **FluenAssertion**, **NSubstitute**, **Gherkin**, **SpecFlow**, **Suzianna**, **Selenium**, **MediatR**, **AutoMapper**, **FluentValidation**, **Swagger**, **Serilog**, **Seq**, MvcPagedList.Core, etc.

## Supporting
I’ve dedicated over 2 years of my free time to create something helpful for people. I’d love to hear about your success and how my project has benefited you. Please consider giving a star ⭐ to the [project on GitHub](https://github.com/hamed-shirbandi/TaskoMask) and sharing it with your friends on social media. Your support means a lot!