Sofa language chat bot is a personal project targeted to build an open source chat bot for learning everyone a foreign language, of course it's in first steps but I made a decision to pull this project as a sample for using Domain Driven Design practices. This project is just a sample and has a lots of works to do.
In this project I've tried to follow Domain Driven Design practices and principles -exclusively Solid- as well as implementing technologies like RabbitMq with Masstransit, Autofac, Structuremap, Dapper, EntityFrameworkCore, MongoDB, Identity Server, Microsoft ChatBot, Xunit and etc. Hope Other developers find this project useful.
• Bot Framework Emulator v4• RabbitMq 3.8.2
• MongoDb 4.2.3
• dotnet core 2.2
• Open Package Manage Console and run add-migration command bellow modules.
• In Package Manager Console run Update Database command for each modules.
Sofa.Identity.DependencyInjection, Sofa.CourseManagement.EntityFramework, Sofa.Teacher.EntityFramework.
This project has three domains; CourseManagement -As core domain-, Teacher -for chat bot functionalities- and Identity. CourseMangement servces Api services for an Angular project, that its aim is inputting data from teacher’s panel to publish on Teacher Project. Teacher Project consume data from RabbitMq queue and save it on its own tables (By Ef core and MongoDB), however the main responsibility for Teacher domain is retrieving data for chat bot. The Identity is aimed to implement an TripleA system.