Skip to content

MrKonstantinSh/TodoList-Messaging

Repository files navigation

GitHub Workflow Status (with event) GitHub issues GitHub contributors GitHub forks GitHub Repo stars License: MIT


TodoList-Messaging Logo

TodoList-Messaging

Web API created to work with RabbitMQ and MassTransit using a simple To Do list as an example.

Report Bug

Table of Contents

About The Project

TodoList-Messaging is a Web API created as an example, the main purpose of which is to learn and see how to work with message-brokers (RabbitMQ) and MassTransit framework on the .NET platform.

Features

  • CRUD operations on the 'User' entity
  • CRUD operations on the 'Todo' entity
  • Sending an email notification when the status of a 'Todo' entity changes

The available endpoints can be viewed at link http://{HOST:PORT}/swagger/index.html after the project has been started in 'Development' mode:

TodoList-Messaging Endpoints

Technologies and Tools

Getting Started

Installation and Setup

  1. Clone the repository
> git clone https://github.com/MrKonstantinSh/TodoList-Messaging.git
  1. Go to the project folder
> cd ./ProjectFolder
  1. Create and start docker containers
> docker compose up
  1. Apply migrations
> dotnet ef database update -p src/TodoList.WebApi/TodoList.WebApi.csproj -s src/TodoList.WebApi/TodoList.WebApi.csproj --connection 'Host={HOST};Database=todos;Username={USERNAME};Password={PASSWORD}'

System Description

TodoList-Messaging Diagram

Diagram of interaction of system elements

TodoList.WebApi - Web API that provides the ability to perform CRUD operations on User and Todo entities. When a Todo entity's status changes, it sends a message to the message broker (RabbitMQ) using the MassTransit framework.

TodoList.EmailSender - A service that retrieves messages from a message broker (RabbitMQ) using the MassTransit framework. And performs email distribution based on the content received from the message.

TodoList.MessagingContracts - Contains the contracts of messages sent (received) to (from) the message broker.

Tests

The core functionality of Web Api is covered by unit tests. To run the tests you need to execute the following command:

> dotnet test 

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Konstantin Shulga - mrkonstantinsh@gmail.com

Project Link: https://github.com/MrKonstantinSh/TodoList-Messaging

Releases

No releases published

Packages

No packages published