Giter Site home page Giter Site logo

chat-bot-challenge's Introduction

Chat-bot-challenge

Chatbot app is a challenge to develop an browser-based chat application;

Technologies

This app uses ASP.NET Core 6.0 and Blazor Components on Front-end; It was built using some libraries as SignalR to comunicate in real time between clients and server and Microsoft Identity Server for authentication;

Features

  • โœ… Browser-based chat
  • N/A - Focus on backend
  • โœ… Allow registered users logon and send messages only
  • ๐Ÿšง Send commands with the following format: /stock=stock_code
  • ๐Ÿšง Create a decouple bot that will receive the stock command
  • ๐Ÿฅš Leave the messages ordered by timestamp
  • ๐Ÿฅš Unit tests

Glossary

  • โœ… Done
  • ๐Ÿšง Under construction
  • ๐Ÿฅš Waiting
  • N/A Not applicable

Application Architecture

The applications architectures was thinking about to improve scalability and decouple services. There are an API HUB (Chatbot.Api) and the chat client (Chatbot.App) to avoid scale the entire application. Diving deeper there will be a service (stock bot) to retrieve information from another API (Third party) and post it into the hub back, turning the stock respose into the chat; The api hub should implements an database to store some messages whether it become necessary;

The code architecture followed was Clean Architecture + ddd (as soon as fast) tooking the advantage sharing some code between domains, as we could do sharing nuget/npm packages, like the Broadcast messages service, that should be resude by the stock bot.

How to run

Database

You need to configure your database connection for Identity Server and run the Update-Database command to apply Identity Server database's objects

Configuration

There are two main applications, the server (provides SignalR Hub) and Client (provides user interface chat), on the client application (Chatbot.App) you need to configure into appsettings.development.json the necessary keys to comunicate to each other:

  "ChatServer": {
    "Url": "https://localhost:7001/"
  }

Starting

Configure the startup project for multiple projects (solution configurations) and select both web projects and run!

chat-bot-challenge's People

Contributors

felipebergmann avatar

Watchers

 avatar  avatar

chat-bot-challenge's Issues

Improve message list

Improve message list as an value object to control better how many items it could have

Message abstraction

Change the message model to an abstraction to store any other model like Commands e and Responses (that must implement IMessage interface)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.