Skip to content

A realtime communications prototype built with logistics integration in mind as a Blazor WebAssembly frontend and .NET 6 backend featuring text messaging, peer to peer video calls and more!

License

Soloplan-Innovation-Lab/BlazorChat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

This project is the result of cooperation between the Allgäu Research Center (an institute of the University of Applied Sciences Kempten) and Soloplan GmbH. The goal is to evaluate complexity and feasibility of developing a completely custom chat solution from the ground up by implementing a prototype.

Motivation

It is commonplace in the logistics branche for companies to employ external contractors (independent drivers).

  • Sometimes the default communication path between contractors and the commissioning company is unclear (the initiating party will need to perform lookups of contact information)
  • Oftentimes the default communication path is inefficient due to being restricted to just text (example: e*mail) or just voice (telephone)
  • Oftentimes the default communication path is inefficient due to not automatically providing context. A custom default communication solution allows automatically maintaining context information (information about the tour the driver is currently on, the cargo being carried etc.), saving on overhead from needing to provide this after initiating communication
  • A custom communication solution allows developing of features specific to the logistics branche
  • A custom communication can be integrated deeply with existing software

Project Overview

Features

Group text chat

Chat

  • Send text messages, upload images and files
  • Realtime updates
  • Customizable user profiles (name and profile picture)
  • Per-user read horizon
  • Search for messages
  • Translate messages

Peer to peer video chat

  • Utilises Browser WebRTC Api
  • Transmit microphone, camera and screen capture

Embedded forms

  • Forms attached to messages
  • Forms are defined as Json Schemas

PWA

  • Can be "installed" as Progressive Web App
  • Falls back to a local text cache if internet connection fails

Miscellaneous

  • All data access is scoped to channels (no data leaks between users who don't share channels)
  • Admin REST Api for managing users, channels and forms

Technology

Overview

The project is primarily written in C#.

  • The server application maintains and provides all statically available information.
  • The client project is served by the server, and manages UI states. It is a Blazor single page application (C# compiled to WebAssembly)
  • A shared project primarily contains interface types and constants

Encapsulated behind services are multiple Microsoft Azure products:

  • CosmosDB document database for storing all static information
  • BlobStorage for storing uploaded images/files
  • Translator for translating user messages

Source Code Structure

/Client
   | - /Components : All Blazor components rendering the UI
   | - /Pages : Blazor components with dedicated page Url
   | - /Scripts : Interop typescript source
   | - /Services : Services managing the actual data displayed by the UI
/Server
   | - /AdminApi : REST Api Controllers for the Admin Api
   | - /Controllers : REST Api Controllers for the Client -> Server Api
   | - /Hubs
          | - ChatHub : SignalR Hub Implementation
          | - HubManager : SignalR Helper Service to organise connections and watch them
                           (detect connection loss)
   | - /Models : Types used for accessing and validating data in the database backend
   | - /Pages : Autogenerated fallback page
   | - /Services : Various services organising and compartmentalising data access
/Shared : Interface Types, Common Types, Constants

Architecture Documentation

Cloning and Configuration

⚠ As described in Limits this project is merely a proof of concept prototype, and not fit for production use!

See setup article here

About

A realtime communications prototype built with logistics integration in mind as a Blazor WebAssembly frontend and .NET 6 backend featuring text messaging, peer to peer video calls and more!

Topics

Resources

License

Stars

Watchers

Forks