{"id":30339737,"url":"https://github.com/dalda-iitj/libr","last_synced_at":"2025-08-18T07:16:40.374Z","repository":{"id":285370272,"uuid":"957883258","full_name":"DALDA-IITJ/libr","owner":"DALDA-IITJ","description":"A Moderated, Censorship-Resilient Digital Forum","archived":false,"fork":false,"pushed_at":"2025-05-04T08:25:24.000Z","size":17409,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-01T00:30:41.283Z","etag":null,"topics":["cryptography","distributed-hash-tables","forum","golang","postgresql"],"latest_commit_sha":null,"homepage":"","language":"Go","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/DALDA-IITJ.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-31T09:47:40.000Z","updated_at":"2025-05-18T09:12:26.000Z","dependencies_parsed_at":"2025-03-31T11:21:57.724Z","dependency_job_id":"2514d489-3ac4-40de-8f5e-de85f39ea889","html_url":"https://github.com/DALDA-IITJ/libr","commit_stats":null,"previous_names":["dalda-iitj/libr"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/DALDA-IITJ/libr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DALDA-IITJ%2Flibr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DALDA-IITJ%2Flibr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DALDA-IITJ%2Flibr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DALDA-IITJ%2Flibr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DALDA-IITJ","download_url":"https://codeload.github.com/DALDA-IITJ/libr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DALDA-IITJ%2Flibr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270958114,"owners_count":24675329,"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","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cryptography","distributed-hash-tables","forum","golang","postgresql"],"created_at":"2025-08-18T07:16:34.847Z","updated_at":"2025-08-18T07:16:40.359Z","avatar_url":"https://github.com/DALDA-IITJ.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# LIBR\n\n[\u003cimg src=\"https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original.svg\" width=\"60\"\u003e](https://golang.org)\n\n[![Open in Visual Studio Code](https://img.shields.io/badge/Open%20in%20VS%20Code-007ACC?logo=visual-studio-code\u0026logoColor=white)](https://vscode.dev/)\n[![Contributors](https://img.shields.io/github/contributors/DALDA-IITJ/libr)](https://github.com/DALDA-IITJ/libr/graphs/contributors)\n[![Forks](https://img.shields.io/github/forks/DALDA-IITJ/libr?style=social)](https://github.com/DALDA-IITJ/libr/network/members)\n[![Stars](https://img.shields.io/github/stars/DALDA-IITJ/libr?style=social)](https://github.com/DALDA-IITJ/libr/stargazers)\n[![License](https://img.shields.io/github/license/DALDA-IITJ/libr)](https://github.com/DALDA-IITJ/libr/blob/main/LICENSE)\n[![Go Version](https://img.shields.io/badge/Go-v1.16+-blue?logo=go\u0026logoColor=white)](https://golang.org/)\n\n*A Moderated, Censorship-Resilient Digital Forum* 📢🚫\n\n[Key Features](#key-features) • [Installation](#installation) • [Documentation](#api-endpoints) • [Contributing](#contributing)\n\n\u003c/div\u003e\n\n## 🔄 Overview\n\nLIBR is a decentralized messaging platform that combines blockchain principles with content moderation to create a secure, distributed communication system. Built with Go for backend services and React for the user interface, LIBR provides a robust framework for verified message exchange with cryptographic proof of moderation and authenticity.\n\n## 🔐 Key Features\n\n- **Decentralized Messaging** 🌐: Exchange messages across a distributed network with cryptographic verification.\n- **Content Moderation** 🪖: Multi-level content moderation with configurable thresholds for different categories of inappropriate content.\n- **Signature Verification** ✅: Messages are cryptographically signed by both users and moderators, ensuring authenticity and approval.\n- **Distributed Architecture** 🧰: Multiple moderator nodes validate content independently to prevent censorship and single points of failure.\n- **Cryptographic Security** 🔒: RSA-based cryptography for message signing and verification.\n- **Time-Based Message Bucketing** ⏰: Messages are grouped into time buckets for efficient retrieval and organization.\n\n\u003e 🚀 **Note**: LIBR is designed for environments where content moderation is necessary while maintaining the benefits of decentralization. It's ideal for educational institutions, private organizations, and communities seeking a balance between free expression and responsible content management.\n\n## ⚙️ Prerequisites\n\n- **Go** (v1.16 or higher)\n- **Node.js** (v14 or higher)\n- **Google Cloud Platform API key** (for content moderation services)\n- **npm** or **yarn** package manager\n\n## 🚀 Running the System\n\n1. Start moderator nodes:\n```bash\ncd modules/mod\n./mod\n# Default port is 4000, can be configured in .env\n```\n\n2. Start client application:\n```bash\ncd modules/client\ngo run .\n```\n\n3. Start UI application:\n```bash\ncd modules/UI\nnpm start\n```\n\n## 📂 API Endpoints\n\n### 🔧 Moderator Service\n\n#### 🔒 Content Moderation\nSend a message for moderation approval.\n```bash\ncurl -X POST http://localhost:4000/moderate \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"message\": \"Your message content here\",\n    \"timestamp\": \"1681234567\"\n  }'\n```\n\n#### 📊 Response Format\n```json\n{\n  \"public_key\": \"moderator_public_key\",\n  \"sign\": \"digital_signature_of_approved_content\"\n}\n```\n\n### 📲 Client Service\n\n#### 📢 Send Message\nSubmit a new message to the network.\n```bash\n# Endpoint implementation details in client module\n```\n\n#### 📃 Retrieve Messages\nGet messages from a specific time bucket.\n```bash\n# Endpoint implementation details in client module\n```\n\n## 🚧 System Architecture\n\nLIBR consists of several interconnected modules:\n\n1. **Moderator Nodes** 🔧: Analyze message content for inappropriate material using Google Cloud Natural Language API.\n2. **Client Module** 📡: Handles message creation, interaction with moderators, and storage operations.\n3. **Core Module** 🔄: Provides cryptographic functions, configuration management, and blockchain interfaces.\n4. **UI Module** 🎨: User interface for interacting with the messaging platform.\n5. **Storage Layer** 📂: Distributed storage system for persisting signed messages.\n\n## 🕵️‍ Content Moderation\n\nLIBR supports customizable content moderation:\n\n- Currently implemented using Google Cloud Natural Language API\n- User-dependent moderation that can be customized based on needs\n- Multiple moderation categories supported (toxic content, insults, profanity, etc.)\n- Users can implement their own moderation services or use the provided API\n\nTo modify moderation settings, users can edit the configuration in the file:\n```\nmodules/mod/config.go\n```\n\n## 📚 Contributing\n\n1. Fork the repository to start working on your changes.\n2. Create a feature branch.\n3. Commit your changes.\n4. Push to the branch.\n5. Create a Pull Request to merge your changes.\n\n## 🌐 License\n\nThis project is licensed under the terms of the MIT license. See [LICENSE](LICENSE) for more details.\n\n## 👨‍💼 Team\n\nLIBR is developed by the DALDA team at IIT Jodhpur. 🎓🌟\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdalda-iitj%2Flibr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdalda-iitj%2Flibr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdalda-iitj%2Flibr/lists"}