Giter Club home page Giter Club logo

vban-messenger's Introduction

VBAN-Messenger

A VBAN-Chat client in Electron and React

⚠️ This project is currently in developpement, it could be bugged or unusable.

Welcome to the beautiful repository of VBAN-Messenger (Also called VBAN-M).

If you want to contribute you can read the VBAN-Messenger Renderer API References, some functions of the API references are not added/finished. The renderer API is the interface between the backend and the renderer (Frontend). You can also contribute by working on the backend or the frontend directly (Figma prototype of the frontend).

How to build VBAN-Messenger for developpment

Prerequisites

Node.js (LTS), git and a configured C++ compiler for Node.js (The doc of node-gyp explain how to do that)

1. Clone repository and install dependencies

Enter the following commands:

git clone https://github.com/Staco78/VBAN-Messenger
cd VBAN-Messenger
npm i

2. Build native modules for electron

Enter the following command:

npm run rebuild

3. Build the projet

Enter the following command:

npm run build

4. Run Electron

Enter the following command:

npm start

vban-messenger's People

Contributors

piripe avatar staco78 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

vban-messenger's Issues

Pin Messages

A message can be pinned in any type of channel.
When a user pin a message, the pin is synchronized for everyone in the channel.

All pins can be seen for anyone in the channel.

Searching

In any channel, the user can search a message with filters. No more. Just that. You want more complicated explications ? I don't.

Direct Messages Channel Type

Direct Message is a channel type where only 2 users can communicate (In text or voice).
The identifier of a DM channel is the username of the receiver at his IP address (Eg. [email protected])
⚠️ The IP address can be changed (Refer to #4 )

DM channel other specifications :

  • Users can send messages (Refer to #1 )
  • Users can pin messages (Refer to #6 )
  • Users can make call (Refer to Call issue)
  • Users can edit/delete their own messages (Refer to #7)
  • Users can search messages (Refer to #8)
  • Users can load history of the channel if the other have it (Refer to History Sync issue)
  • Can have E2E Encryption (Refer to E2E Encryption issue)

Some issues are not currently written.

Send/Receive Message

If the receiver is disconnected, save the message in cache and wait until he's connected to send the message.

In function of the receiver's client, send/receive the message differently :

VBAN-M to VBAN-M

Send the full message with all infos. (Timestamp, channel (Can be DM or a group) and attachment meta)

VBAN-M to VBAN-CHAT

Send the message formatted with timestamp. (Eg. [7:54 PM] Hey my friend)
If the message is from a group, start the message with the group name. (Eg. The Best Group > [7:54 PM] Hey my friends)

VBAN-CHAT to VBAN-M

When the message is received, use the current date as timestamp, the channel is DM by default but when the message starts with a group name (Eg. The Best Group > Hey my friends !) use this group as channel.
⚠️ The spaces before and after the '>' are optional to parse the group name.

User Resync

When a user with a known username connects to VBAN-M, VBAN-M asks the client of this user for his identifier (Refer to #5 ), if the identifier already exist in the database, VBAN-M will replace the old user by the new one by changing its IP address in the database.

⚠️ Subject to changes for security issues ⚠️

Share user infos with friends

When the user change any info of himself (Status, commentary, profile picture, color...), send new infos to all connected friends.

⚠️ Only commentary and color can be sent to VBAN-CHAT (Using a ping)

User Identifier

The user identifier is a long text randomly set who can be exported/imported by the user.
The user identifier is made to identify you when you change your IP Address (Refer to #4 )
Other users can only conserve a hashed version of the identifier.

Message Editing

In a channel, all users can edit/delete their own messages.
When a message is edited/deleted, the user sends to other members of the channel that the message is deleted.

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.