EShopDistributed is a sample/portfolio ecommerce application that demonstrates a distributed .NET architecture with an AI-enabled product suggestion feature. It is intended for demos, learning, and showcasing integration patterns between services and a simple recommender.
Provide a lightweight example of how to build a modular ecommerce system (catalog, cart, orders) and integrate a recommendation engine to surface personalized product suggestions.
- Product catalog browsing with sample data
- Cart and checkout flows (demo) -> API Only
- Order history (sample) -> API Only
- AI-enabled product suggestions (content-based / collaborative demo) -> Blazor UI
- Clear separation of services suitable for experimenting with microservices and containers
- Orchestration demonstration using Aspire
- Backend: .NET APIs (products, cart/orders, recommendations)
- Recommender: pluggable module (local algorithm or external ML service)
- Frontend: simple UI to browse and view suggested items
- Data: sample datasets; easy to replace with a real DB or event store
- Optional: containerization (Docker) for each service
- Capture signals: page views, purchases, categories, and user/session context.
- Build features/embeddings for products and interactions.
- Query the recommender (local model or remote service) to get ranked candidates.
- Apply business filters (stock, promotions) and return top-N suggestions to the UI.
Implementation notes:
- The included recommender favors simplicity and explainability for demos.
- Replace or extend with vector search, collaborative filtering, or hybrid models for production.
- The UI is not completed its for the sake of using the search (traditional and AI-enabled)
- Aspire for orchestration
- PostreSQL
- Resis
- RabbitMQ
- Keycloak
- Ollama (llama3.2 and all-minilm)
- .NET 10, C# for backend services
- Blazor default template for demos
- Clone the repo:
git clone https://github.com/dezashibi/EShopDistributed.git
- Docker/Docker Desktop must be ready
- Build and run
AppHostproject- Alternatively in the root folder you can run
aspire runin case Aspire CLI is installed
- Alternatively in the root folder you can run
- The
Aspiredashboard should be open now, otherwise you can access it viahttps://localhost:17125/ WebAppurl access:https://localhost:7080/- For testing Catalog endpoint use Catalog.http file.
- For testing Basket endpoint use Basket.http file.
- Make sure refresh the token using the token endpoint from keycloak (placed in the same http file)
Use and adapt this sample for demos and learning.



