GithubHelp home page GithubHelp logo

david0718 / taskomask Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hamed-shirbandi/taskomask

0.0 1.0 0.0 8.24 MB

Task management application based on .NET 6 with DDD, CQRS and Event Sourcing Concepts

Home Page: http://taskomask.ir

License: MIT License

C# 81.63% Dockerfile 0.24% HTML 17.64% CSS 0.48% JavaScript 0.01%

taskomask's Introduction

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:

  • 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
  • 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.

  • 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.

  • 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
    • Serilog
    • Seq
    • 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.

LinkedIn Instagram GitHub Medium Nuget Email Telegram Twitter

Change logs

  • Jan, 2022

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

    • Upgrade to .NET 6
  • Nov, 2021

    • Start user panel with Blazor
  • Oct, 2021

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

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

    • Full refactore
  • Nov, 2020

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

    • Repository Created

taskomask's People

Contributors

hamed-shirbandi avatar connellsharp avatar amiradeli avatar armanleft avatar kurnakovv avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.