{"id":51570437,"url":"https://github.com/boopi7/zk-chat","last_synced_at":"2026-07-10T19:02:01.634Z","repository":{"id":324720652,"uuid":"1084059142","full_name":"Boopi7/zk-chat","owner":"Boopi7","description":"Anonymous chat using RLN and InterRep","archived":false,"fork":false,"pushed_at":"2025-10-27T08:15:20.000Z","size":6679,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-17T20:51:46.105Z","etag":null,"topics":["interrep","nrln"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Boopi7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-27T06:53:08.000Z","updated_at":"2025-11-03T09:27:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Boopi7/zk-chat","commit_stats":null,"previous_names":["dravynn/zk-chat","boopi7/zk-chat"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Boopi7/zk-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Boopi7%2Fzk-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Boopi7%2Fzk-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Boopi7%2Fzk-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Boopi7%2Fzk-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Boopi7","download_url":"https://codeload.github.com/Boopi7/zk-chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Boopi7%2Fzk-chat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35339931,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-10T02:00:06.465Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["interrep","nrln"],"created_at":"2026-07-10T19:01:58.714Z","updated_at":"2026-07-10T19:02:01.629Z","avatar_url":"https://github.com/Boopi7.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003ch1 align=\"center\"\u003e\n        RLN Anonymous Chat\n    \u003c/h1\u003e\n    \u003cp align=\"center\"\u003eAnonymous instant chat application using RLN\u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/devnova777/rln-anonymous-chat\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/project-RLN%20Anonymous%20Chat-blue.svg?style=flat-square\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/devnova777/rln-anonymous-chat/actions/workflows/test.yaml\"\u003e\n        \u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/workflow/status/njofce/rln-anonymous-chat/test?label=test\u0026logo=github\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://eslint.org/\" target=\"_blank\"\u003e\n        \u003cimg alt=\"Linter eslint\" src=\"https://img.shields.io/badge/linter-eslint-8080f2?style=flat-square\u0026logo=eslint\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://prettier.io/\" target=\"_blank\"\u003e\n        \u003cimg alt=\"Code style prettier\" src=\"https://img.shields.io/badge/code%20style-prettier-f8bc45?style=flat-square\u0026logo=prettier\"\u003e\n    \u003c/a\u003e\n    \u003cimg alt=\"Repository top language\" src=\"https://img.shields.io/github/languages/top/njofce/rln-anonymous-chat?style=flat-square\"\u003e\n\u003c/p\u003e\n\nA spam resistant instant messaging application for private and anonymous communication. It has the following general properties:\n\n- **Spam Resistance**: members of all sorts of chat rooms will be removed if they spam the communication channel.\n- **Anonymity**: the members within the chat room can only know the content of the messages, but they can't know the message sender (the publisher). The users of the application have total control over their private data (ex. identity, encryption keys, chat rooms they are part of) and it's not shared with anyone. The identity of a user is revealed only when spamming the communication channel.\n- **Privacy**: only the members within a chat can view the content of the messages designated for that chat - members outside of the chat can't view the message content.\n\nHowever, 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.\n\nTo 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:\n\n- It enables strong anti spam measures as the spammer's identity commitment will be revealed and will be banned from the application.\n- Sybil-attack possibilities are drastically reduced because the user needs to own a reputable social media account, which means they can't easily register themselves multiple times.\n\n\n\nThe full technical specification for this project can be found at (this url)[https://www.notion.so/njofce/Technical-Specification-6649797a76ed4858933015360fc76650]\n\n## Steps to run locally\n\nIn order to run the application locally, you need to have installed Docker and docker-compose. \n1. Run `docker-compose up -d` in order to spin up Redis and Mongo DB\n2. Install `tsc` and `react-scripts` globally.\n3. For `app` and `server` projects, copy `.env.example` to `.env` and modify the values to your choice. Default values should work fine.\n4. Run `yarn install`\n5. Run `yarn build`\n6. Run `yarn server` in a terminal\n7. Run `yarn app` in another terminal\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboopi7%2Fzk-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboopi7%2Fzk-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboopi7%2Fzk-chat/lists"}