All Projects → kenforthewin → Mentat

kenforthewin / Mentat

Licence: mit
scalable group chat with tags and pretty good privacy.

Programming Languages

javascript
184084 projects - #8 most used programming language
elixir
2628 projects

Projects that are alternatives of or similar to Mentat

Saea
SAEA.Socket is a high-performance IOCP framework TCP based on dotnet standard 2.0; Src contains its application test scenarios, such as websocket,rpc, redis driver, MVC WebAPI, lightweight message server, ultra large file transmission, etc. SAEA.Socket是一个高性能IOCP框架的 TCP,基于dotnet standard 2.0;Src中含有其应用测试场景,例如websocket、rpc、redis驱动、MVC WebAPI、轻量级消息服务器、超大文件传输等
Stars: ✭ 318 (+257.3%)
Mutual labels:  chat, websockets
Remote retro
Free, world-class retrospectives
Stars: ✭ 474 (+432.58%)
Mutual labels:  phoenix, websockets
Django Private Chat
Django one-to-one Websocket-based Asyncio-handled chat, developed by Bearle team
Stars: ✭ 376 (+322.47%)
Mutual labels:  chat, websockets
Deltachat Core Rust
Delta Chat Rust Core library, used by Android/iOS/desktop apps and bindings
Stars: ✭ 300 (+237.08%)
Mutual labels:  chat, pgp
Messengyr
A clone of Facebook Messenger. Built with Elixir + Phoenix.
Stars: ✭ 44 (-50.56%)
Mutual labels:  phoenix, chat
React Redux Chat
🔥🔥react+redux-chat 模仿实现PC微信聊天系统。
Stars: ✭ 308 (+246.07%)
Mutual labels:  chat, websockets
Phoenix Chat Example
💬 A Step-by-Step Beginners Tutorial for Building, Testing & Deploying a Chat app in Phoenix 1.5.5 🚀
Stars: ✭ 452 (+407.87%)
Mutual labels:  phoenix, chat
Echoplexus
Socket.io powered chat, JavaScript REPL, whiteboard, and WebRTC calls
Stars: ✭ 392 (+340.45%)
Mutual labels:  chat, pgp
Websockets Chat
Laravel WebSockets chat
Stars: ✭ 44 (-50.56%)
Mutual labels:  chat, websockets
Client
Keybase Go Library, Client, Service, OS X, iOS, Android, Electron
Stars: ✭ 7,848 (+8717.98%)
Mutual labels:  chat, pgp
chat-with-deno-and-preact
Chat app with Deno + Preact
Stars: ✭ 27 (-69.66%)
Mutual labels:  chat, websockets
Django Channels React Multiplayer
turn based strategy game using django channels, redux, and react hooks
Stars: ✭ 52 (-41.57%)
Mutual labels:  chat, websockets
Exchat
(Not maintaining) A Slack-like app by Elixir, Phoenix & React(redux)
Stars: ✭ 252 (+183.15%)
Mutual labels:  phoenix, chat
Mercurius
Real-time Messenger for Laravel
Stars: ✭ 309 (+247.19%)
Mutual labels:  chat, websockets
Emberclear
Encrypted Chat. No History. No Logs.
Stars: ✭ 157 (+76.4%)
Mutual labels:  chat, websockets
Main
a minimal, distraction-free chat application
Stars: ✭ 648 (+628.09%)
Mutual labels:  chat, websockets
Real Time Public Chat
This program show how to create a public chat using javascript
Stars: ✭ 45 (-49.44%)
Mutual labels:  chat, websockets
Channelstream
Channelstream is a websocket communication server for web applications
Stars: ✭ 52 (-41.57%)
Mutual labels:  chat, websockets
Localslackirc
IRC gateway for slack, running on localhost for one user
Stars: ✭ 84 (-5.62%)
Mutual labels:  websockets
Chaskiq
A full featured Live Chat, Support & Marketing platform, alternative to Intercom, Drift, Crisp, etc ...
Stars: ✭ 1,263 (+1319.1%)
Mutual labels:  chat

Mentat

Codeship Status for kenforthewin/mentat

Mentat is a group chat application with a focus on message tagging and privacy. It allows deep categorization and retrieval of messages based on tags (a la Twitter hashtags). It also aims for reasonable privacy, meaning everything aside from feature metadata is end-to-end encrypted with OpenPGP, including avatars. Feature metadata is anything that the server depends on in order to deliver a feature; tags are stored in plaintext in order to index and retrieve them from the database, and URLs are sent as plaintext so the server can ping them and generate a thumbnail.

See it in action here:

https://metachat.app

Features

  • End-to-end encryption by default
  • Deeply embedded tagging system
  • Link previews
  • Web notifications

Usage Instructions

Inviting users

Each room is identified by its UUID. To invite a user, either share the UUID found in the URL of the room, or simply share the URL. The user will be instructed to set a username, then a new request will be generated. Click the users icon in the upper left corner and accept the request to add the user to the group.

Adding message tags

Message tagging is the key feature of Mentat. There are several ways to add a tag to a message:

  1. Embed a tag in the message, like you can with a tweet.
  2. Select a tag or several tags from the tag dropdown. When you send a message, all the selected tags will be added to the message.
  3. Click the plus icon next to a message after it is sent. Type the tag and press Enter.

Browsing tags

When you start a session, no tags are selected. In this view, you will see every message that is sent, and you can scroll through all previous messages. When you select a tag, you will only see past messages that have that tag, and you will only receive messages with that tag. You can select several tags to sort by a number of categories, allowing quick access to past messages on the topic that interests you. Use this feature to categorize your messages based on project, memes, events, etc.

User Authentication

Like the Web Auth API, Mentat uses asymmetric cryptography for authentication. When you first join a chat room, a personal keypair will be generated and stored in browser storage. If you are the creator of this room, the client will also generate a keypair for the room. If not, a request will be generated: the client will send its personal public key to the server and request access to the room. Someone who already has the group keypair must accept the request to grant you access. When the member accepts your request, her client will encrypt the room private key with your public key and send the encrypted key to the server. Now your client can grab the room key, decrypt it, and begin decrypting the room's messages.

Right now, it's the user's responsibility to use a secure device that only she has access to. On the roadmap, a user could specify a temporary session that would be deleted after a certain amount of time or inactivity.

Stack

  • fully containerized

Server

  • Phoenix/Elixir
  • Postgres

Client

  • React/Redux
  • OpenPGP.js

Development

Ensure that Docker and docker-compose are installed and the Docker daemon is running. Start the development environment by navigating to the root of the project and running the following script: ./scripts/run_dev.sh. Once the compilation and Javascript build are complete, the app will be available at http://localhost:4000.

Project Structure

Invitation to contribute

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].