A multi-client, real-time consultancy platform. We architected an "Uber-style" matching engine using RabbitMQ, SignalR, and ReactiveUI to deliver millisecond latency across mobile networks.
A vertical slice of modern .NET engineering.
Native-like performance with Reactive architectures.
The brain of the operation. Pure C# logic.
ConsultantsWithNoActiveConversationsSpec).How we connect a Customer to a Consultant in milliseconds.
User taps "Preguntar". The app stores the message locally (Optimistic UI) and pushes to SignalR.
Hub receives `CustomerInitiatedChat`. Does NOT block. Wraps payload and pushes to RabbitMQ `customer_first_auto_chat`.
Background Service consumes message. Triggers MediatR Command. Uses ConsultantEligibilitySpec to find available agents.
Server broadcasts `HelloConsultantIArrived` to targeted Consultant Groups. Consultants see "New Request" pop up.
Consultant taps "Accept". HTTP POST claims the `UnansweredConversation`. EF Core creates the Aggregate.
System upgrades connection to Direct Chat. History synced to Mongo/GridFS.
We didn't just wrap a website. We built a resilient, reactive native application.
We use SourceList and ObservableAsPropertyHelper to manage state. The UI is a pure function of the data stream, eliminating synchronization bugs.
Messages are queued in a local ConcurrentQueue if the network drops. A background Rx Timer retries sending transparently when connectivity is restored.
Chat history is cached on disk (JSON) for instant load, while Redis handles ephemeral presence data on the server.
Using the right tool for the right job.
Core relational data. Customers, Consultants, Financial Transactions.
Chat logs and Audit trails. Flexible schema for message metadata.
Real-time Presence. "Who is online?" and distributed SignalR backplane.
Binary storage. Efficient handling of images and PDF attachments.