Home

Awesome

<p align="center"> <h1 align="center"> RLN Anonymous Chat </h1> <p align="center">Anonymous instant chat application using RLN</p> </p> <p align="center"> <a href="https://github.com/njofce/rln-anonymous-chat" target="_blank"> <img src="https://img.shields.io/badge/project-RLN%20Anonymous%20Chat-blue.svg?style=flat-square"> </a> <a href="https://github.com/njofce/rln-anonymous-chat/actions/workflows/test.yaml"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/njofce/rln-anonymous-chat/test?label=test&logo=github"> </a> <a href="https://eslint.org/" target="_blank"> <img alt="Linter eslint" src="https://img.shields.io/badge/linter-eslint-8080f2?style=flat-square&logo=eslint"> </a> <a href="https://prettier.io/" target="_blank"> <img alt="Code style prettier" src="https://img.shields.io/badge/code%20style-prettier-f8bc45?style=flat-square&logo=prettier"> </a> <img alt="Repository top language" src="https://img.shields.io/github/languages/top/njofce/rln-anonymous-chat?style=flat-square"> </p>

A spam resistant instant messaging application for private and anonymous communication. It has the following general properties:

However, there are a few use cases where not all properties will hold, since the general functionality of the chat is to support different types of rooms - public, private and 1-1 rooms. The anonymity property doesn't apply to the 1-1 chat rooms, while the privacy property doesn't apply to the public chat rooms. On the other hand, the spam resistance applies to all types of chat rooms, as the key property of the entire application.

To prevent the spamming problem, social reputation is used as a collateral by using the InterRep architecture for linking a social network profile with the user credentials (identity commitment). This kind of bonding enables few security properties:

The full technical specification for this project can be found at (this url)[https://www.notion.so/njofce/Technical-Specification-6649797a76ed4858933015360fc76650]

Steps to run locally

In order to run the application locally, you need to have installed Docker and docker-compose.

  1. Run docker-compose up -d in order to spin up Redis and Mongo DB
  2. Install tsc and react-scripts globally.
  3. For app and server projects, copy .env.example to .env and modify the values to your choice. Default values should work fine.
  4. Run yarn install
  5. Run yarn build
  6. Run yarn server in a terminal
  7. Run yarn app in another terminal