{"id":30232406,"url":"https://github.com/deveel/deveel.messaging","last_synced_at":"2026-05-10T07:02:02.123Z","repository":{"id":309945617,"uuid":"1025810605","full_name":"deveel/deveel.messaging","owner":"deveel","description":"Attempts to define a standard pattern for the implementation of messaging across multiple channels and providers","archived":false,"fork":false,"pushed_at":"2025-09-03T19:14:53.000Z","size":751,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-29T03:58:17.941Z","etag":null,"topics":["connector","connectors","dotnet","dotnet-core","email","message","messaging","pattern","push","schema","sendgrid","sms","telegram","twilio","validation","whatsapp"],"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/deveel.png","metadata":{"files":{"readme":".github/README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-24T20:53:30.000Z","updated_at":"2025-09-03T19:14:57.000Z","dependencies_parsed_at":"2025-09-03T21:12:35.140Z","dependency_job_id":"0d125368-d419-47b7-817b-d09fd1822216","html_url":"https://github.com/deveel/deveel.messaging","commit_stats":null,"previous_names":["deveel/deveel.messaging","deveel/deveel.message.model"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/deveel/deveel.messaging","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deveel%2Fdeveel.messaging","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deveel%2Fdeveel.messaging/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deveel%2Fdeveel.messaging/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deveel%2Fdeveel.messaging/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deveel","download_url":"https://codeload.github.com/deveel/deveel.messaging/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deveel%2Fdeveel.messaging/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32769313,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T02:36:36.067Z","status":"ssl_error","status_checked_at":"2026-05-08T02:36:07.210Z","response_time":54,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["connector","connectors","dotnet","dotnet-core","email","message","messaging","pattern","push","schema","sendgrid","sms","telegram","twilio","validation","whatsapp"],"created_at":"2025-08-15T00:00:42.500Z","updated_at":"2026-05-08T06:17:24.014Z","avatar_url":"https://github.com/deveel.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Deveel Messaging Framework\r\n\r\n[![.NET](https://img.shields.io/badge/.NET-8.0%20%7C%209.0-512BD4)](https://dotnet.microsoft.com/)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n[![NuGet](https://img.shields.io/badge/NuGet-Available-blue)](https://www.nuget.org/) [![codecov](https://codecov.io/gh/deveel/deveel.messaging/graph/badge.svg?token=0JV12EPQOD)](https://codecov.io/gh/deveel/deveel.messaging)\r\n\r\n\r\nA modern, extensible messaging framework for .NET that provides a unified abstraction layer for various messaging providers including SMS, email, WhatsApp, and push notifications. The framework offers strong type safety, comprehensive validation, and flexible connector architecture.\r\n\r\n## 🚀 Motivation\r\n\r\nModern applications often need to send notifications through multiple channels (SMS, email, WhatsApp, push notifications, webhooks). Each provider has different APIs, authentication methods, and message formats. The Deveel Messaging Framework solves this by:\r\n\r\n- **Unified API**: Single interface for all messaging providers\r\n- **Type Safety**: Strongly-typed endpoints and configurations prevent runtime errors\r\n- **Extensibility**: Easy to add new connectors and message types\r\n- **Validation**: Built-in message and configuration validation\r\n- **Webhook Support**: Comprehensive webhook handling for message receiving and status updates\r\n- **Testability**: Comprehensive mocking and testing support\r\n- **Performance**: Async/await throughout with efficient resource usage\r\n\r\n## 📦 Core Packages\r\n\r\n| Package | Description | NuGet |\r\n|---------|-------------|-------|\r\n| `Deveel.Messaging.Abstractions` | Core messaging abstractions and models | [![NuGet](https://img.shields.io/nuget/v/Deveel.Messaging.Abstractions.svg)](https://www.nuget.org/packages/Deveel.Messaging.Abstractions/) |\r\n| `Deveel.Messaging.Connector.Abstractions` | Base classes and interfaces for connectors | [![NuGet](https://img.shields.io/nuget/v/Deveel.Messaging.Connector.Abstractions.svg)](https://www.nuget.org/packages/Deveel.Messaging.Connector.Abstractions/) |\r\n\r\n## 🔌 Available Connectors\r\n\r\n| Connector | Provider | Type | Documentation | Package | Nuget |\r\n|-----------|----------|------|---------------|---------|--------|\r\n| **Twilio SMS** | Twilio | SMS | [📖 Guide](../docs/connectors/twilio-sms-connector.md) | `Deveel.Messaging.Connector.Twilio` | [![NuGet](https://img.shields.io/nuget/v/Deveel.Messaging.Connector.Twilio.svg)](https://www.nuget.org/packages/Deveel.Messaging.Connector.Twilio/) |\r\n| **Twilio WhatsApp** | Twilio | WhatsApp | [📖 Guide](../docs/connectors/twilio-whatsapp-connector.md) | `Deveel.Messaging.Connector.Twilio` | [![NuGet](https://img.shields.io/nuget/v/Deveel.Messaging.Connector.Twilio.svg)](https://www.nuget.org/packages/Deveel.Messaging.Connector.Twilio/) |\r\n| **Firebase FCM** | Firebase | Push | [📖 Guide](../docs/connectors/firebase-push-connector.md) | `Deveel.Messaging.Connector.Firebase` | [![NuGet](https://img.shields.io/nuget/v/Deveel.Messaging.Connector.Firebase.svg)](https://www.nuget.org/packages/Deveel.Messaging.Connector.Firebase/) |\r\n| **SendGrid Email** | SendGrid | Email | [📖 Guide](../docs/connectors/sendgrid-email-connector.md) | `Deveel.Messaging.Connector.Sendgrid` | [![NuGet](https://img.shields.io/nuget/v/Deveel.Messaging.Connector.Sendgrid.svg)](https://www.nuget.org/packages/Deveel.Messaging.Connector.Sendgrid/) |\r\n\r\n\u003e **📋 [Complete Connector Documentation](docs/connectors/README.md)** - Detailed installation, configuration, and usage guides for all connectors.\r\n\r\n## 🔧 Quick Installation\r\n\r\n### Core Framework\r\n```bash\r\n# Install core messaging abstractions\r\ndotnet add package Deveel.Messaging.Abstractions\r\n\r\n# For building custom connectors\r\ndotnet add package Deveel.Messaging.Connector.Abstractions\r\n```\r\n\r\n### Connectors\r\nEach connector has specific installation and setup instructions in its documentation:\r\n- **📱 SMS**: [Twilio SMS Installation Guide](docs/connectors/twilio-sms-connector.md#installation)\r\n- **💬 WhatsApp**: [Twilio WhatsApp Installation Guide](docs/connectors/twilio-whatsapp-connector.md#installation)  \r\n- **🔔 Push**: [Firebase FCM Installation Guide](docs/connectors/firebase-push-connector.md#installation)\r\n- **📧 Email**: [SendGrid Email Installation Guide](docs/connectors/sendgrid-email-connector.md#installation)\r\n\r\n## 🏁 Quick Start\r\n\r\n### 1. Choose Your Messaging Provider\r\n\r\nPick the connector that matches your needs from the [connector documentation](docs/connectors/README.md).\r\n\r\n### 2. Basic Usage Pattern\r\n\r\nAll connectors follow the same pattern:\r\n\r\n```csharp\r\nusing Deveel.Messaging;\r\n\r\n// 1. Define a schema\r\nvar schema = new ChannelSchema(\"Provider\", \"Type\", \"1.0.0\")\r\n    .WithCapabilities(ChannelCapability.SendMessages)\r\n    .AllowsMessageEndpoint(EndpointType.EmailAddress)\r\n    .AddContentType(MessageContentType.PlainText);\r\n\r\n// 2. Create and configure connector\r\nvar connector = new ProviderConnector(schema);\r\nawait connector.InitializeAsync(cancellationToken);\r\n\r\n// 3. Build and send message\r\nvar message = new MessageBuilder()\r\n    .WithId(\"msg-001\")\r\n    .WithEmailSender(\"sender@company.com\")\r\n    .WithEmailReceiver(\"user@example.com\")\r\n    .WithTextContent(\"Hello from our service!\")\r\n    .Message;\r\n\r\nvar result = await connector.SendMessageAsync(message, cancellationToken);\r\nif (result.IsSuccess)\r\n{\r\n    Console.WriteLine($\"Message sent: {result.Value?.MessageId}\");\r\n}\r\n```\r\n\r\n### 3. Provider-Specific Examples\r\n\r\nEach connector has detailed examples in its documentation:\r\n\r\n- **[📱 Twilio SMS Examples](docs/connectors/twilio-sms-connector.md#usage-examples)**\r\n- **[💬 WhatsApp Business Examples](docs/connectors/twilio-whatsapp-connector.md#usage-examples)**\r\n- **[🔔 Firebase Push Examples](docs/connectors/firebase-push-connector.md#usage-examples)**\r\n- **[📧 SendGrid Email Examples](docs/connectors/sendgrid-email-connector.md#usage-examples)**\r\n\r\n## 🎯 Core Features\r\n\r\n### Strongly-Typed Endpoints\r\n```csharp\r\n// Type-safe endpoint creation\r\nvar emailEndpoint = Endpoint.EmailAddress(\"user@example.com\");\r\nvar phoneEndpoint = Endpoint.PhoneNumber(\"+1234567890\");\r\nvar deviceEndpoint = Endpoint.DeviceId(\"firebase-device-token\");\r\n```\r\n\r\n### Flexible Content Types\r\n```csharp\r\n// Rich content support\r\n.WithHtmlContent(\"\u003ch1\u003eWelcome!\u003c/h1\u003e\")\r\n.WithTemplateContent(\"template-name\", new { user = \"John\" })\r\n.WithMediaContent(\"https://example.com/image.jpg\", \"image/jpeg\")\r\n```\r\n\r\n### Webhook Integration\r\n```csharp\r\n// Bidirectional messaging\r\n[HttpPost(\"webhook/provider\")]\r\npublic async Task\u003cIActionResult\u003e ReceiveMessage([FromForm] Dictionary\u003cstring, string\u003e data)\r\n{\r\n    var messageSource = MessageSource.FromFormData(data);\r\n    var result = await connector.ReceiveMessagesAsync(messageSource, cancellationToken);\r\n    return Ok();\r\n}\r\n```\r\n\r\n### Error Handling\r\n```csharp\r\nvar result = await connector.SendMessageAsync(message, cancellationToken);\r\nif (!result.IsSuccess)\r\n{\r\n    Console.WriteLine($\"Error: {result.ErrorMessage}\");\r\n    // Handle specific error cases\r\n}\r\n```\r\n\r\n## 📚 Documentation\r\n\r\n### Getting Started\r\n- **[📖 Getting Started Guide](../docs/getting-started.md)** - Step-by-step setup and first message\r\n- **[🔌 Connector Documentation](../docs/connectors/README.md)** - Complete connector guides\r\n\r\n### Framework Guides\r\n- **[🏗️ Channel Schema Guide](../docs/ChannelSchema-Usage.md)** - Schema configuration\r\n- **[⚡ Connector Implementation](../docs/ChannelConnector-Usage.md)** - Building custom connectors\r\n- **[🎯 Endpoint Types](../docs/EndpointType-Usage.md)** - Type-safe endpoint usage\r\n- **[🚀 Advanced Configuration](../docs/advanced-configuration.md)** - Production patterns\r\n\r\n### Provider-Specific\r\n- **[📱 Twilio SMS](../docs/connectors/twilio-sms-connector.md)** - SMS messaging with webhooks\r\n- **[💬 Twilio WhatsApp](../docs/connectors/twilio-whatsapp-connector.md)** - WhatsApp Business integration\r\n- **[🔔 Firebase FCM](../docs/connectors/firebase-push-connector.md)** - Push notifications\r\n- **[📧 SendGrid Email](../docs/connectors/sendgrid-email-connector.md)** - Email delivery\r\n\r\n## 🌟 Latest Features\r\n\r\n- **🔥 Firebase Cloud Messaging** - Complete FCM connector with multicast support\r\n- **💬 Enhanced WhatsApp Business** - Interactive elements, templates, and media\r\n- **📞 Two-Way SMS** - Webhook support for incoming messages and status updates\r\n- **📊 Batch Processing** - Efficient bulk operations across all connectors\r\n- **🛡️ Health Monitoring** - Built-in connection testing and diagnostics\r\n\r\n## 🧪 Testing\r\n\r\nThe framework includes comprehensive test suites with over 500 tests:\r\n\r\n```bash\r\n# Run all tests\r\ndotnet test\r\n\r\n# Run tests for specific areas\r\ndotnet test test/Deveel.Messaging.Abstractions.XUnit\r\ndotnet test test/Deveel.Messaging.Connector.Twilio.XUnit\r\n```\r\n\r\n## 🤝 Contributing\r\n\r\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\r\n\r\n### Development Setup\r\n```bash\r\n# Clone and build\r\ngit clone https://github.com/deveel/deveel.messaging.git\r\ncd deveel.messaging\r\ndotnet build\r\ndotnet test\r\n```\r\n\r\n## 📜 License\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n## 📞 Support\r\n\r\n- **📖 Documentation**: [docs/README.md](docs/README.md)\r\n- **🐛 Issues**: [GitHub Issues](https://github.com/deveel/deveel.messaging/issues)\r\n- **💬 Discussions**: [GitHub Discussions](https://github.com/deveel/deveel.messaging/discussions)\r\n- **📧 Email**: support@deveel.com\r\n\r\n---\r\n\r\n*Built with ❤️ by the Deveel team*\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeveel%2Fdeveel.messaging","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeveel%2Fdeveel.messaging","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeveel%2Fdeveel.messaging/lists"}