{"id":16432995,"url":"https://github.com/nour-karoui/secure-chat","last_synced_at":"2025-06-20T23:32:44.696Z","repository":{"id":48049350,"uuid":"370031837","full_name":"nour-karoui/secure-chat","owner":"nour-karoui","description":"An end to end encrypted chat app built using React, Express, Socket.io, Mongodb, Node.Js, LDAP \u0026 OpenSSL","archived":false,"fork":false,"pushed_at":"2021-08-09T22:43:00.000Z","size":288,"stargazers_count":7,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-08T04:05:08.604Z","etag":null,"topics":["asymmetric-encryption","chat","chat-application","encryption-decryption","javascript","ldap-authentication","nodejs","openssl","private-key","public-key-cryptography","react","realtime","socket-io"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/nour-karoui.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}},"created_at":"2021-05-23T11:14:33.000Z","updated_at":"2024-12-03T11:31:04.000Z","dependencies_parsed_at":"2022-08-12T17:30:55.900Z","dependency_job_id":null,"html_url":"https://github.com/nour-karoui/secure-chat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nour-karoui/secure-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nour-karoui%2Fsecure-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nour-karoui%2Fsecure-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nour-karoui%2Fsecure-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nour-karoui%2Fsecure-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nour-karoui","download_url":"https://codeload.github.com/nour-karoui/secure-chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nour-karoui%2Fsecure-chat/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261036257,"owners_count":23100896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["asymmetric-encryption","chat","chat-application","encryption-decryption","javascript","ldap-authentication","nodejs","openssl","private-key","public-key-cryptography","react","realtime","socket-io"],"created_at":"2024-10-11T08:44:50.925Z","updated_at":"2025-06-20T23:32:39.679Z","avatar_url":"https://github.com/nour-karoui.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eWelcome to Secure Chat 👋\u003c/h1\u003e\n\u003cp\u003e\n  \u003ca href=\"https://github.com/nour-karoui/secure-chat#readme\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Documentation\" src=\"https://img.shields.io/badge/documentation-yes-brightgreen.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/nour-karoui/secure-chat/graphs/commit-activity\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Maintenance\" src=\"https://img.shields.io/badge/Maintained%3F-yes-green.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/nour-karoui/secure-chat/blob/master/LICENSE\" target=\"_blank\"\u003e\n    \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/github/license/bishkou/password-pwnd\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n#### An end to end encrypted messaging Real time messaging app built using React, Express, Socket.io, Mongodb, Node.Js, LDAP \u0026 OpenSSL\n\n\n### 🏠 [Homepage](https://github.com/nour-karoui/secure-chat)\n\n![alt tag](https://user-images.githubusercontent.com/47257753/126567790-afcdae8b-27fc-4e9e-8b5b-efabcafb7067.png)\n\n***NB: This work is heavily based on [Timothylp's work](https://github.com/TimothyIp/rr_challenge). Shout out to the amazing frontend he prepared.***   \n\u003chr /\u003e\n\nFeatures:\n  - User Account Creation/Login using LDAP\n  - Real-time chat using socket.io\n  - Tokens for API calls to backend\n  - Cookies for saved session on browser refresh\n  - Private Messaging with other users, all messages are end to end encrypted using asymmetric encryption \u003cbr/\u003e\n\n\n## Installing\n```\ngit clone https://github.com/nour-karoui/secure-chat .\nnpm install\nnpm start\ncd server \nnpm install\nnpm start\nGo to http://localhost:3001/\n```\n\n***PS***: Before Starting the app, make sure:\n\n **1. you have apache directory studio installed and running.\nYou can download it from [HERE](https://directory.apache.org/studio/downloads.html).\nAfter running the apache directory studio, make sure to link it to our project in the file *server/config/ldap-client*.**\n \n **2. you generate a self signed certificate that'll allow you to verify the identity of the users and generate their certificates, *(our self signed cetificate is saved in server/openssl/CA)*.**\n\n\n## How Does it work\n\n1. When creating the account, the user generates a public and private key, and saves them in localstorage. the user sends the public key to the server alongside with his credentials.\n*NEVER SHARE THE PRIVATE KEY WITH ANYONE*.\n2. The server receives the user's credentials and his public key, he generates a certificate out of the public key and saves the user in the LDAP server.\n3. Each time userA wants to chat with userB, the server sends userB's certificate to userA and vice versa.\nEach user saves the other's certificate in their localstorage to be able to encrypt messages and send them.\n4. The *ENCRYPTED* messages are saved in Monge DB.\n\n\n## Author\n\n👤 **Nour**\n\n* Github: [@nour-karoui](https://github.com/nour-karoui)\n* LinkedIn: [@nourkaroui](https://www.linkedin.com/in/nourkaroui/)\n\n## 🤝 Contributing\n\nContributions, issues and feature requests are welcome!\u003cbr /\u003eFeel free to check [issues page](https://github.com/nour-karoui/secure-chat/issues)\n\n## Show your support\n\nGive a [STAR](https://github.com/nour-karoui/secure-chat) if this project helped you!\n\n## 📝 License\n\n* Copyright © 2021 [Nour](https://github.com/nour-karoui).\n* This project is [MIT](https://github.com/nour-karoui/secure-chat/blob/master/LICENSE) licensed.\n\n***\n_This README was generated with by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnour-karoui%2Fsecure-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnour-karoui%2Fsecure-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnour-karoui%2Fsecure-chat/lists"}