{"id":24880915,"url":"https://github.com/sn1f3rt/blogchain","last_synced_at":"2025-03-27T06:25:32.614Z","repository":{"id":274490017,"uuid":"786531617","full_name":"sn1f3rt/BlogChain","owner":"sn1f3rt","description":"A decentralized blogging platform that implements the Sign-In with Ethereum authentication protocol natively in Python. ","archived":false,"fork":false,"pushed_at":"2024-04-15T18:12:22.000Z","size":933,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-19T10:58:07.076Z","etag":null,"topics":["decentralized","ethereum","flask","siwe","siwe-py"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sn1f3rt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["sn1f3rt"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"custom":null}},"created_at":"2024-04-14T18:38:44.000Z","updated_at":"2024-11-18T17:24:07.000Z","dependencies_parsed_at":"2025-01-27T17:18:02.390Z","dependency_job_id":null,"html_url":"https://github.com/sn1f3rt/BlogChain","commit_stats":null,"previous_names":["sn1f3rt/blogchain"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sn1f3rt%2FBlogChain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sn1f3rt%2FBlogChain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sn1f3rt%2FBlogChain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sn1f3rt%2FBlogChain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sn1f3rt","download_url":"https://codeload.github.com/sn1f3rt/BlogChain/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245793957,"owners_count":20673086,"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":["decentralized","ethereum","flask","siwe","siwe-py"],"created_at":"2025-02-01T11:27:49.597Z","updated_at":"2025-03-27T06:25:32.598Z","avatar_url":"https://github.com/sn1f3rt.png","language":"HTML","funding_links":["https://github.com/sponsors/sn1f3rt"],"categories":[],"sub_categories":[],"readme":"# BlogChain - A Decentralized Blogging Platform\n\n[![License](https://img.shields.io/github/license/Sn1F3rt/BlogChain)](LICENSE)\n[![GitHub last commit](https://img.shields.io/github/last-commit/Sn1F3rt/BlogChain)](https://github.com/Sn1F3rt/BlogChain/commits/main/)\n[![GitHub issues](https://img.shields.io/github/issues/Sn1F3rt/BlogChain)](https://github.com/Sn1F3rt/BlogChain/issues)\n[![GitHub pull requests](https://img.shields.io/github/issues-pr/Sn1F3rt/BlogChain)](https://github.com/Sn1F3rt/BlogChain/pulls)\n[![GitHub stars](https://img.shields.io/github/stars/Sn1F3rt/BlogChain)](/)\n[![GitHub forks](https://img.shields.io/github/forks/Sn1F3rt/BlogChain)](https://github.com/Sn1F3rt/BlogChain/forks)\n[![GitHub watchers](https://img.shields.io/github/watchers/Sn1F3rt/BlogChain)](https://github.com/Sn1F3rt/BlogChain/watchers)\n\n## Table of Contents\n\n- [About](#about)\n- [Prerequisites](#prerequisites)\n- [Installation](#installation)\n- [Configuration](#configuration)\n- [Running](#running)\n  - [Development](#development)\n  - [Production](#production)\n- [License](#license)\n\n## About\n\nBlogChain is a decentralized blogging platform built on the [Ethereum](https://ethereum.org/en/) blockchain. It is the first of its kind to implement the [Sign-In with Ethereum](https://login.xyz/) authentication protocol, natively in Python using the [siwe-py](https://pypi.org/project/siwe/) library. On the core, it is built using the [Flask](https://flask.palletsprojects.com/) web framework. Database management is done using [SQLAlchemy](https://www.sqlalchemy.org/). \n\nIt supports Ethereum based user authentication, setting username, creating and updating blog posts, and viewing blog posts. On top of that, it supports tipping post authors in order to incentivize blogging.\n\n## Prerequisites\n\n- Git\n- Python 3.8 or higher (tested on 3.11)\n- MariaDB/MySQL database\n- [Ganache](https://www.trufflesuite.com/ganache) or any other Ethereum testnet\n\n## Installation\n\n1. Clone the repository\n\n   ```shell\n    git clone https://github.com/Sn1F3rt/BlogChain.git\n   ```\n   \n2. Switch to the project directory\n\n   ```shell\n    cd BlogChain\n   ```\n   \n3. Create a virtual environment\n\n   ```shell\n    python -m venv .venv\n   ```\n   \n4. Activate the virtual environment\n\n   ```shell\n    source .venv/bin/activate\n   ```\n   \n5. Install the dependencies\n\n   ```shell\n    pip install -r requirements.txt\n   ```\n\n## Configuration\n\nCopy the [`config.example.py`](config.example.py) file to `config.py` and:\n\n- update the `SECRET_KEY` variable with a 32-bit hexadecimal string.\n- update the `DB_*` variables with your database credentials.\n- update the `WEB3_PROVIDER` variable with the URL of your Ethereum node.\n\n## Running\n\n### Development\n\n```shell\npython launcher.py\n```\n\n### Production\n\n```shell\ngunicorn launcher:app\n```\n\n## License\n\n[GNU General Public License v3.0](LICENSE)\n\nCopyright \u0026copy; 2024 [Sayan \"Sn1F3rt\" Bhattacharyya](https://sn1f3rt.me)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsn1f3rt%2Fblogchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsn1f3rt%2Fblogchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsn1f3rt%2Fblogchain/lists"}