{"id":15038966,"url":"https://github.com/sentemon/messagingplatform","last_synced_at":"2025-07-30T03:38:07.553Z","repository":{"id":251206799,"uuid":"835400613","full_name":"sentemon/MessagingPlatform","owner":"sentemon","description":"in development","archived":false,"fork":false,"pushed_at":"2024-12-08T20:04:02.000Z","size":843,"stargazers_count":13,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-10T00:05:41.952Z","etag":null,"topics":["aspnetcore","chat","clean-architecture","dotnet","dotnetcore","signalr","signalr-chat"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sentemon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-29T18:57:12.000Z","updated_at":"2025-03-10T09:10:50.000Z","dependencies_parsed_at":"2024-08-09T16:34:06.213Z","dependency_job_id":"f1c437c3-bf64-419d-af80-1c4ea0d7031e","html_url":"https://github.com/sentemon/MessagingPlatform","commit_stats":null,"previous_names":["sentemon/messagingplatform"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sentemon/MessagingPlatform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentemon%2FMessagingPlatform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentemon%2FMessagingPlatform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentemon%2FMessagingPlatform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentemon%2FMessagingPlatform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sentemon","download_url":"https://codeload.github.com/sentemon/MessagingPlatform/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentemon%2FMessagingPlatform/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267804051,"owners_count":24146529,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aspnetcore","chat","clean-architecture","dotnet","dotnetcore","signalr","signalr-chat"],"created_at":"2024-09-24T20:41:00.900Z","updated_at":"2025-07-30T03:38:07.533Z","avatar_url":"https://github.com/sentemon.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Messaging Platform\n\n## Preview\n![example-usage](https://github.com/user-attachments/assets/5c1f8684-d5b8-4cdd-a2e1-ffe0e5cf5c63)\n\n## Overview\n**Messaging Platform** is a real-time messaging application that allows users to create accounts, send messages, and engage in live communication. It is built using a range of modern technologies with a focus on scalability, maintainability, and adherence to **Clean Architecture** principles and **Domain-Driven Design (DDD)**. This document provides an overview of the system, its architecture, and instructions on how to set up and run the project.\n\n## Tech Stack\n\n- **Backend**:\n  - **C#**\n  - **ASP.NET Core Web API** – RESTful APIs for managing users, messages, and communication.\n  - **Entity Framework Core** – ORM for database access and management.\n  - **MediatR** – Mediator pattern implementation to handle commands and queries.\n  - **SignalR** – For real-time communication between users.\n  - **Docker** – Containerization for easy deployment and environment management.\n  - **AutoMapper** – Object mapping to simplify transformations between DTOs and domain entities.\n  \n- **Frontend**:\n  - **Angular** – Client-side framework for building responsive and dynamic user interfaces.\n  - **TypeScript** – Strongly typed language for frontend development.\n\n- **Testing**:\n  - **xUnit** – Unit testing framework.\n  - **Moq** – Mocking framework for unit tests.\n  - **Integration Tests** – Ensure that components interact correctly.\n  \n## Architecture\n\nThis project follows the **Clean Architecture** pattern, which emphasizes separation of concerns and independence of components:\n\n1. **Domain Layer**: Contains core business logic and entities following **DDD** principles. This layer is completely isolated from any external dependencies.\n   \n2. **Application Layer**: Implements the application's use cases using **MediatR** for CQRS (Command Query Responsibility Segregation) and defines application service interfaces.\n   \n3. **Infrastructure Layer**: Contains implementations of the repository patterns, database context with **EntityFrameworkCore**, and integration with external systems like SignalR for real-time communication.\n   \n4. **Presentation Layer (Web API)**: ASP.NET Core Web API exposing endpoints for user registration, authentication, and messaging functionalities.\n\n5. **Client (Frontend)**: Built using **Angular** and **TypeScript**, providing a user-friendly interface for account management and real-time messaging.\n\n## Features\n\n- **User Authentication**: Register and log in using secure authentication protocols.\n- **Real-Time Messaging**: Chat with other users using real-time messaging powered by **SignalR**.\n- **Account Management**: Create and manage user accounts.\n- **Message History**: Persist chat messages and allow users to view message history.\n- **Scalable Architecture**: Built with clean code principles, allowing for easy extension and maintenance.\n  \n## Setup Instructions\n\n### Prerequisites\n\n- **Docker**\n- **Git**\n\n### Setup\n\n1. **Clone the repository**:\n   ```bash\n   git clone https://github.com/sentemon/MessagingPlatform.git\n   cd MessagingPlatform\n   ```\n\n2. **Build and run the application**:\n   Use Docker Compose to build and start both the backend and the frontend along with the database:\n   ```bash\n   docker compose up --build\n   ```\n\n3. **Access the application**:\n   - **Swagger UI**: [http://localhost:8080/swagger/index.html](http://localhost:8080/swagger/index.html)\n   - **Frontend**: [http://localhost:4200](http://localhost:4200)\n\n## Key Dependencies\n\n- **ASP.NET Core**: Provides the framework for building web APIs.\n- **Entity Framework Core**: Simplifies database interactions through an ORM.\n- **MediatR**: Manages request and response communication between components.\n- **SignalR**: Enables real-time web functionality for the messaging feature.\n- **AutoMapper**: Maps objects to simplify data transfer between layers.\n- **xUnit \u0026 Moq**: Provides tools for writing unit and integration tests.\n\n## Contributing\n\n1. Fork the repository.\n2. Create a new branch for your feature or bugfix.\n3. Commit your changes with meaningful commit messages.\n4. Push your changes to your fork and create a pull request.\n\n## License\n\nThis project is licensed under the **MIT License**. See the LICENSE file for details.\n\n---\n\nFeel free to modify the sections based on the specific requirements of your project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsentemon%2Fmessagingplatform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsentemon%2Fmessagingplatform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsentemon%2Fmessagingplatform/lists"}