⚠️ PROJECT STATUS: UNDER CONSTRUCTION
This project is actively being developed and is not yet production-ready. Some components may be incomplete or subject to change.
Chat-Knot is a real-time communication platform built with ASP.NET Core and SignalR, leveraging Domain-Driven Design (DDD) and modular monolith architecture principles. It provides a scalable foundation for event-driven chat applications with well-defined bounded contexts, supporting user messaging, presence tracking, and distributed communication flows.
- Real-Time Messaging via SignalR
- Modular Monolith Architecture with independent bounded contexts
- Domain-Driven Design (DDD) for modular and maintainable domain logic
- Event-Driven Communication using in-process events (MediatR)
- Clean Architecture with clear separation of concerns per module
- Simple Deployment as a single application (easily extractable to microservices)
- Backend: ASP.NET Core 9.0, SignalR
- Architecture: Modular Monolith, DDD, Clean Architecture
- Messaging: MediatR (in-process events)
- Data Storage: SQL Server / MongoDB (polyglot persistence)
- Deployment: Single application (Docker support)
Chat-Knot/
├── src/
│ └── Modules/ # Bounded Contexts
│ ├── Users/ # User Management Module
│ │ ├── User.Domain/ # Domain entities, value objects, events
│ │ ├── User.Application/ # Use cases, commands, queries (CQRS)
│ │ ├── User.Infrastructure/# Data access, EF Core configurations
│ │ └── User.Api/ # API endpoints for this module
│ ├── Chats/ # Chat Module (planned)
│ └── Notifications/ # Notifications Module (planned)
├── ChatKnot.sln # Solution file
└── README.md
Each module follows Clean Architecture principles with clear separation:
- Domain: Pure business logic, entities, value objects
- Application: Use cases, CQRS handlers, domain event handlers
- Infrastructure: Database, external services, implementations
- Api: HTTP endpoints, controllers, DTOs
- Build a modular, scalable chat system using clean architecture and DDD
- Explore real-time event orchestration with SignalR
- Serve as a reference project for modular monolith with clear bounded contexts
- Design for easy extraction to microservices when needed
Luis Piquin Rey
- GitHub: @luispiquinrey
- Email: piquin.rey@gmail.com
Use at your own risk in non-production environments.