Peer Brain - A Decentralized P2P Social Network App
This open-source project implements a peer-to-peer social network app where users are represented as brain cells. It is completely decentralized and there is no central authority or recommendation algorithms, nor is there any censorship. Messages are propagated between users in a meritocratic way, and users have control over the strength of the signals they receive. This allows for more free and open communication between users.
If you want to contribute, you can fork this repository and issue pull requests! Feel free to use ChatGPT or OpenAI to help you with the coding.
Table of Contents
- How does the open-source workflow work?
- Encryption Mechanism
- Move to Peerbrain organization on Github
- Codebase split into its components
- User delete functionality added
- Various bug fixes
- Code clean-up
- User account creation now requires email verification before allowing you to login
- Password reset functionality has been added
How does the open-source workflow work?
The open-source workflow is a process by which users can contribute to a project. It is typically done through a system like GitHub, where users can fork, or copy, a repository, make changes to it, and then submit a pull request. The project maintainers then review the changes and either accept or reject them. If accepted, the changes are merged into the main repository. This process allows for collaboration between users and for projects to be updated and improved quickly.
- Load symmetric key.
- Encrypt the user entered message using the symmetric key.
- Fetch the public key from the server.
- Encrypt the symmetric key using the public key.
- Decrypt the encrypted symmetric key using the private key.
- Decrypt the encrypted message using decrypted symmetric key.
This is encryption cycle for each message we write or read.
- Clone the PeerBrain Repo to your local machine
- Now navigate to client directory
- Install all the packages from the requirements.txt file using command:
pip install -r requirements.txt
- After successful installation, start the client service. Don't change anything in the code :) When everything runs fine as expected, you will see the menu as below:
- First step is to register yourself with the application.Select option 2 to register.
- After successful registration, try to login into the application with details you have used during registration process.
- After successful login, you will be able to see the Main menu as below:
- Make sure you have generated the keys prior exploring the application. To generate keys Navigate to Account details section, select generate the keys(2nd option).
Here are some resources about this project:
Finxter Youtube project start video -The video that started it all.
Git basics -This article talks about how to use Git versioning, which comes in handy when working on open source projects.
Symmetric Key Exchange Server -This server takes care of storing the symmetric keys and sending back the encrypted versions of these when a user wants to read a friends messages. It is a part of this project but it doesn't share any resources with it. The two are separated to ensure the security of the symmetric keys.