https://github.com/ldtteam/chatchain (branch: rewrite)
Hi, there. Recently I was asked by a friend of mine to make a post about the project I'm working on here. Here it goes:
ChatChain is an open source project that I started working on (properly) about 3 months ago. The aim of the project is to provide a generic web API for linking various (text) chat services (and game chats) together in more dynamic ways than is currently available. At the present time, most forms of linking chat services together are only available in a 1 to 1 form (e.g. between Discord and IRC) -- I hope to change this in an efficient and elegant manner.
The project currently is using Microsoft's ASP.NET Core framework (v2.2) and consists of 3 main parts:
All parts of this project have been made to integrate with a MongoDB instance for data storage, and a Redis server for intercommunication when scaled out or load balanced. The WebApp is currently only functional, and is ugly and full of default information and CSS/HTML.
With the above in mind, we move on to a few components of the API/service. Currently we have 3 main components, Clients, Groups and Users.
Most of the server is done other than the specific Hub methods, I am currently working on two clients, one for Discord and one for Minecraft.
I have been able to create methods for relaying Generic Messages and Client Events (connecting/disconnecting/etc). I am now working on User Events, such as Connecting, Disconnecting, Death, Banning, Kicking and Achievements.
~ feel free to suggest any other platforms (with bot/modding capabilities) to add!
I'd like this to be a simple REST api that would allow people to add, remove and create both clients and groups.
The first step for this would be a way to load plugins (maybe lua? or otherwise .dll files). (This Might Help)
after that would be to setup events that in the hub that plugins could use to edit messages or other hub methods to their liking.
I'd like to make the WebApp actually presentable, I'm thinking of probably a darker colour scheme, and just a generally better layout. I'm pretty sure almost anything is better than the current state of the UI (sadly)
A way to store the various users on different clients, and be able to keep things like join/leave dates and other simple information. This will also be important for the next feature.
A way to be able to link a person's various chat service users together, this would allow for things like making chat use the user's service specific username (and profile picture) instead of whichever username is used on the sending client.
If you ban a user on one chat service, you probably want them banned everywhere right? well this would be what would make that possible, among other things this would also allow you to run bot commands on other clients, and even game commands from a chat
The above feature is only useful if only the appropriate people can use it, but sadly each and every different chat service or game has its own permissions style, etc. This feature would allow for a hopefully simple way to bridge those together, my thoughts on this are making groups of users (a user can have multiple groups) which signify permission levels, these groups are then mapped on each client to their client's respective permissions.