Skip to content

Task management system based on .NET 8 with Microservices, DDD, CQRS, Event Sourcing and Testing Concepts

License

Notifications You must be signed in to change notification settings

hamed-shirbandi/TaskoMask

Repository files navigation

What is TaskoMask?

build and test Mutation testing GitHub issues

TaskoMask is an open-source task management system built on the .Net framework. The primary objective of this project is to demonstrate the practical application of advanced software development concepts such as DDD (Domain-Driven Design), TDD (Test-Driven Development), BDD (Behavior-Driven Development), and Microservices.

In many cases, the experience of applying these concepts to real-world software products is often obscured by proprietary software companies. TaskoMask seeks to provide transparency and insight into their usage.

We invite you to explore our project's wiki for more information

Try it [online]

taskomask website

Documentation

Plan and Progress

All the information presented beyond this section represents our project's final objectives and the broader vision. It's important to note that some of these elements may still be a work in progress. To gain insight into our project's roadmap and track our progress, please refer to the following items:

Design

🔴Work is in progress

Here is a comprehensive list of the patterns, principles, approaches, and methodologies that we have incorporated into our project's design. It's important to note that these have been included as examples to showcase their usage within a project. In a real-world design, you would need to carefully evaluate and select the most appropriate ones based on your project's specific trade-offs and requirements.

development architecture

Implementation

Here is a comprehensive list of the tools and technologies we have employed to implement this project.

  • Back-end:

    click for details
  • Front-end:

    click for details
    • Blazor
      • Blazor Server
        • Cookie Authentication without ASP.NET Identity
        • It was Blazor Server befor refactoring it to WebAssembly (browse the codes here)
      • Blazor WebAssembly (standalone)
        • JWT Authentication
      • Comunication between components
      • Local Storage
      • Consume REST API
      • Retry using HttpClientRetryHelper
      • Handle Drag and Drop
      • Using Modal, Toast, etc.
    • .HTML
    • CSS
    • JavaScript
    • JQuery
    • Bootstrap
    • Jquery.noty
    • Chart.js
  • Some other Features:

    click for details
    • Continuous Integration
    • Feature Branch Workflow
    • Conventional Commits
    • GitHub Actions
    • Mutation testing dashboard reporter
    • Caching Behavior using Pipeline Pattern
    • Validation Behavior using Pipeline Pattern (Check both Fluent Validation and Data Annotation Validation)
    • Event Storing Behavior using Pipeline Pattern
    • Exception Handling
    • Cookie Authentication
    • JWT Authentication
    • Role Permission Base User Management without ASP.NET Identity (check Domain documentation)
    • Swagger UI with JWT Support

Contributing

We welcome contributions, issue reports, and questions from the community. Any contributions you make are highly valued and appreciated.

Please refer to our Contribution Guide for detailed instructions on how to get involved in this project.

This project thrives and evolves thanks to the dedicated individuals who contribute their time and expertise

GitHub Contributors Image

Articles And Tutorials

Supporting

We are dedicated to creating a valuable resource for the .NET community. If this project has been beneficial to you, please consider showing your support by giving it a ⭐ star. Your support is crucial, whether through starring the project, contributing, or sharing it with anyone who can benefit. You can also join the conversation on Twitter by using the hashtag #taskomask.

Author & License

This project is authored by Hamed Shirbandi and is licensed under the MIT License. You can find Hamed across various online platforms, and please don't hesitate to reach out if you have any questions or inquiries.

LinkedInInstagramGitHubMediumNugetEmailTelegramTwitter

Change logs

2024
  • Sep, 2024

    • Upgrade to .NET 8
2023
  • Oct, 2023

    • Instrument with Prometheus metrics
    • Implement build system using nuke
    • Implement Mutation Testing using Stryker
    • Integrate CI with nuke and stryker
    • Mutation testing dashboard reporter
  • Sep, 2023

    • Global Code Refactoring
    • Handle Managed and Unmanaged Exceptions
    • Log Managed and Unmanaged Exceptions
  • Feb, 2023

    • Simplify Write Service Architecture
    • Implement Unit Tests for Task Services
    • Implement Integration Tests for Task Services
  • Jan, 2023

    • Extract Task Write Service
    • Extract Task Read Service
    • Remove Monolith Service
    • Simplify Write Service Architecture
2022
  • Dec, 2022

    • Extract Board Write Service
    • Extract Board Read Service
    • Implement Integration Tests for Board Services
    • Implement Unit Tests for Board Services
    • Handle RPC requests by gRPC
    • Extract API Gateway Aggregator
    • Complete API Gateway Configs by Ocelot
  • Nov, 2022

    • Implement Unit Tests for Owner Services
    • Implement Integration Tests for Owner Services
  • Oct, 2022

    • Extract Owner Write Service
    • Extract Owner Read Service
    • Handle Messaging by RabbitMQ
  • Sep, 2022

    • Extract Identity Service
    • Add IdentityServer as IDP
    • Add ASP.NET Identity
    • Add User Panel API Gateway
    • Refactor to Clean Architecture
    • Follow Vertical Slice Architecture
    • Follow Use Case Driven Development
  • Aug, 2022

    • Migrate from Monolith to Microservices
  • July, 2022

    • Convert UserPanel from Blazor Server to Blazor WebAssembly
    • Complete the functionalities for single user usage
  • Apr, 2022

    • Implement Unit Tests
    • Implement Integration Tests
    • Implement Acceptance Tests
    • Implement API Tests
    • Implement UI Tests
  • Jan, 2022

    • Full refactor Domain model with DDD concepts
    • Separate Domain Model and Data Model
    • Separate Read Side and Write Side Database
2021
  • Dec, 2021

    • Upgrade to .NET 6
  • Nov, 2021

    • Convert user panel from ASP.NET MVC to Blazor Server
  • Oct, 2021

    • Implement admin panel with ASP.NET MVC
    • Implement administration subdomain
  • Aug, 2021

    • Remove Asp.net Identity
    • Add cookie authentication
    • Add JWT authorization
    • Implement API with ASP.NET Web API
  • Jul, 2021

    • Full refactore
2020
  • Nov, 2020

    • Upgrad from net 3.1 to net 5
    • Implement user panel with ASP.NET MVC
  • Oct, 2020

    • Implement Website with ASP.NET MVC
    • Implement Anemic Domain Model
    • Create Repository