عکس hamed-shirbandi
Task management system based on .NET 6 with Microservices, DDD, CQRS, Event Sourcing and Testing ConceptsC#
موضوع‌ها
۱۹
فورک‌ها
۷۵
ستاره‌ها
۴۰۰
تاریخ ایجاد
۲۵ مهر ۱۳۹۹
آخرین بروزرسانی
حدود ۱۹ ساعت قبل
لایسنس
MIT License

What is TaskoMask?

GitHub issues

TaskoMask is a free and open-source task management system based on .Net. This project is online, and everyone can use it as a team member or project owner. But the primary goal of this project is to be an effort to show how we can implement software technologies and patterns by .Net, so this can be used by developers who are looking for a real example project with real challenges. Please take a look at its wiki!

Try it online: Website - User Panel - Admin Panel - API

taskomask website

Documentation

We are trying to document all necessary information so you can use them to get more information about what we did and how we did and why! There is a list of our documentation:

  • User Guide Documentation:

    This can be used by developers who want to know more about the website, user panel, and admin panel or by end-users who want to use the TaskoMask application to manage their project's tasks. TaskoMask contains 4 web projects as below:

    • Website: This part is implemented with ASP.NET MVC and it contains the website for TaskoMask. As we sayed it is online and we use it as a landing page to introduce TaskoMask and some users activity information.
    • User Panel: This part is implemented with Blazor and it contains a user panel for managing users' tasks. it is online and everybody can register and use it.
    • Admin Panel: This part is implemented with ASP.NET MVC, and it contains a panel to manage whole TaskoMask data by administrators. To check its featchures we made it online by using a temp DB.
    • API: This part is implemented with ASP.NET Web API and it contains API services for TaskoMask clients. You can check it online
  • Domain Documentation:

    This is for developers to be familiar with the domain model, understand the entities and relations and rules and variants, etc. By reading this doc, you can understand the business of this project.

  • Architecture Documentation:

    This doc is about the architecture, pipelines, technologies, patterns, approaches, decisions, and other things we implemented in this project. We talk about our choices and decisions, and challenges.

  • API Documentation:

    This is a live API documentation generated by Swagger, It can be used by front-end or mobile developers to make a client app. For example, we use it in User Panel layer to create a web client by Blazor.

Architecture And Tools

  • Back-end:

    • .Net 6
    • C#
    • ASP.NET Web API
    • ASP.NET MVC
    • MongoDB
    • Redis
    • MediatR
    • AutoMapper
    • FluentValidation
    • Swagger
    • xUnit with FluenAssertion and Moq
    • MvcPagedList.Core
    • RedisCache.Core
  • Front-end:

    • Blazor
      • Blazor Server
      • Cookie Authentication without ASP.NET Identity
      • Working with APIs protected by JWT
      • Comunication between components by messages
    • .HTML
    • CSS
    • Java Script
    • JQuery
    • Bootstrap
    • Jquery.noty
    • Chart.js
  • Patterns, Methodologies، Approaches:

    • Onion Architecture
    • Unit Testing
    • DDD - Rich Domain Model (for core domain) - Anemic Domain Model (for less important subdomains) - Aggregate - Value Object - Domain Event - Domain Service - Always Valid Domain Model - Invariants - Specification - Factory Method - Optimistic Concurrency - Separate Domain Model and Data Model
    • CQRS - Separate Read and Write Model - Separate Read Side DB and Write Side DB
    • Event Sourcing
    • Repository
    • Notification
  • Some Technical Features:

    • Caching Behavior using Pipeline Pattern
    • Validation using Pipeline Pattern (Check both Fluent Validation and Data Annotation Validation)
    • Event Storing using Pipeline Pattern
    • Domain & Application Exception Handler
    • InMemory Bus
    • Cookie Authentication
    • JWT Authentication
    • Role Permission Base User Management without ASP.NET Identity
    • Swagger UI with JWT Support

Contributing

Contributions, issues, and feature requests are welcome. Feel free to check issues page if you want to contribute. Any contributions you make are greatly appreciated. Please check the issues and projects pages before anything.

  1. Give a Star
  2. Fork the Project
  3. Create your Feature Branch
  4. Commit your Changes
  5. Open a Pull Request

This project exists thanks to all the people who contribute.

GitHub Contributors Image

Articles And Tutorials

Supporting

We work hard to make something useful for .NET community, so please give a star ⭐ if this project helped you! We need your support by giving a star or contributing or sharing this project with anyone who can benefit from it.

Author & License

This project is developed by Hamed Shirbandi under MIT licensed. Find Hamed around the web and feel free to ask your question.

personal blog linkedin nuget email github instagram

Change logs

  • Jan, 2022

    - [x] Full domain model refactoring by DDD concepts
    - [x] Separate Domain Model and Data Model
    - [x] Separate Read Side and Write Side Database
    
  • Dec, 2021

    - [x] Upgrade to .NET 6
    
  • Nov, 2021

    - [x] Start user panel with Blazor
    
  • Oct, 2021

    - [x] Start admin panel with ASP.NET MVC
    - [x] Implement administration subdomain by CRUD
    
  • Aug, 2021

    - [x] Remove Asp.net Identity from project
    - [x] Add cookie authentication
    - [x] Add jwt authorization
    
  • Jul, 2021

    • Full refactore
  • Nov, 2020

    • Upgrade from net 3.1 to net 5
  • Oct, 2020

    - [x] Repository Created