A decentralized social blogging platform that enables users to share posts and aggregate content from other sources, using a simple, RESTful inbox model.
- Distributed Social Network: Allows users to interact across different nodes, maintaining autonomy while sharing posts and content.
- Inbox Model: Posts, likes, and comments are routed through an inbox system, ensuring that content is shared with the appropriate users (public posts to followers, friends-only posts to specific users).
- Content Aggregation: Users can aggregate posts from authors they follow across different nodes, creating a personalized feed.
- RESTful Architecture: The platform is built with a simple, RESTful architecture, focusing on ease of use and scalability without complex protocols like ActivityPub.
- User-Friendly: Designed to be intuitive and easy to navigate, making it simple for users to interact with posts, like and comment, and manage their content without a steep learning curve.
SocialDistribution requires Python 3.11+ and Node.js 20+ to run.
To install dependencies, run the following command.
make dependencies
To run the webapp, first create a production build of the frontend.
make build
Then, run the Django server.
make backend
To view documentation for API endpoints, run the Django server, and visit /redoc/
.
To ensure the reliability and functionality of the backend, unit tests have been written using Django's testing framework. These tests cover various parts of the application, including model logic, views, and API endpoints.
To run them, execute the following command.
make test
The following are our nodes that are already deployed on Heroku.
- https://social-distribution-tqyoung-bad8770cc2df.herokuapp.com/
- https://transparent-jwan-de425e3e313f.herokuapp.com/
- https://social-distribution-omelchuk-a7deff81f6a3.herokuapp.com/
- https://social-distribution-asolanki-45d4887bf9b6.herokuapp.com/
- https://jastegh-socialdistribution-c7853f320baf.herokuapp.com/
- https://socialdistribution-jassidak-a0db46597407.herokuapp.com/
Contributions are welcome! Please open an issue or submit a pull request. Make sure to follow the coding standards outlined in the repository.
This project is licensed under the Apache 2.0 License.