This article provides a high level overview of the different technologies and frameworks used by C#Bot, along with resources to assist developers with becoming familiar with and start working with the bot.
The application consists of two parts,
- server-side - data access via API (REST and GraphQL).
The server-side is found within the server-side root directory under
The client-side for the entire project exists in the
clientside directory of the project. There is no HTML rendering done in the server-side and all data is accessed from the API presented by the server-side.
- C# Tutorial - A good tutorial for C#.
Supporting Tools (Server-Side)
- ASP.NET - This is the server-side library that manages the request/response pipeline, handles controller actions, and manages user authentication.
- ASP.NET inside C# - A tutorial for using ASP.NET inside C#.
- Entity Framework Core - This library handles the database connection and data access layer of the application.
- GraphQL .NET - This library is used to build GraphQL schemas’ as well as queries and mutations that can be run.
- GraphQL.EntityFramework - Integrates GraphQL with the entity framework to provide efficient table joins when constructing large GraphQL queries.
- React - React is the main DOM rendering library that is used inside of C#Bot.
- React Router - For page routing, C#Bot uses React Router
Supporting Tools (Client-Side)
- MobX - For state management on the client-side C#Bot uses MobX, an observer library with tight integration with React.
- SCSS (Sass) - SCSS (or Sass) is a superset of CSS that is used for styling the client-side.
- Apollo GraphQL - Apollo is used to facilitate client-side communication with GraphQL API, which is presented by the server-side.
- xUnit - xUnit and xUnit runner are the test framework and test runner used for C#Bot.
- SpecFlow 3 - SpecFlow is the framework used for writing Selenium based tests for C#Bot
Supporting Tools (Test Target)
- RestSharp - RestSharp is a C# library for sending API requests. It is used by the C#Bot testing target for API tests.