HexHoot
This is an attempt to create an Opensource Peer-to-peer Social Network with Zero-Knowledge-Proof based authentication. The objective is to democratize social networking by eliminating any form of central servers.
The initial target is to release a desktop version that can be installed and run on Linux, macOS and Windows.
About
Internet is supposed to be free; free as in "libre" and not "gratis". There are plenty of implementations of social networks around. Most of them have central servers, run by their makers, that handle all aspects of it.
The issue with having a centralized server is that there is an organization that holds on to all the information created by its users. In many cases, the users who created the content no longer own the content once posted; the ownership is transferred to the company that runs the social network. Furthermore, these platforms can take down any users or content as they choose to, (as some Youtubers have described) like a god.
Even the best efforts to implement a social network in a peer-to-peer manner would have a centralized server to authenticate and verify the user. We would like to change that.
Our goal is to create a social network wherein the users own, control and host their information. There is no central server involved even for authentication; we accomplish this by using Zero Knowledge Proof strategies.
RFA
R - Requirements
A social network that:
- Values privacy of the users
- Collects no data from the users
- Users own and host all the data on their devices
- No servers are involved; not even for user authentication.
- Has essential features of a modern social network.
- Should be less addictive than modern social networks.
- Personalizable templates, themes, etc.
- Open-source, so that there would be no trust issues.
F - Functionalities / Functional Design
- Ability to create and share profiles
- Ability to connect two profiles (add as a friend or follow) by scanning a QR code.
- Send private messages.
- Form groups and send messages.
- Write a post and share a photo or video that is viewable to anyone to whom the profile is connected.
A - Architecture
Everything shall be modules, including the engine. Each module will be written in a Model-View-Controller design. Modules shall have a JSON file that informs which other modules the module is dependent on.
For message communication, we could use Hyperswarm (based on Hypercore).
TODO: Architecture diagrams need to be added here
Tasks
The following Trello board captures all the tasks that need to be done, that are actively worked upon and that have been completed.
https://trello.com/b/cvbsEOpe/hexhoot
Try it out
As a prerequisite to using Hexhoot, you would need to install Node.js on your computer. The following link would help you with the same.
https://nodejs.dev/en/download/
After that, you simply have to open your Terminal / CMD, go to the directory where you downloaded this source code and run the following commands:
npm install
npm start
Other Important commands
Build everything:
make
Clean the build:
make clean
Start the application:
npm start
Before submitting
Run the following command to ensure that all the Javascript files follow the coding standards.
make lint
Run the following command to ensure that all the tests are running fine
npm run test
Copyright © 2022 Zenin Easa Panthakkalakath