{"id":20327613,"url":"https://github.com/tokahuke/samizdat","last_synced_at":"2025-04-11T20:11:35.433Z","repository":{"id":40460422,"uuid":"390078307","full_name":"tokahuke/samizdat","owner":"tokahuke","description":"Your content, available.","archived":false,"fork":false,"pushed_at":"2025-01-10T04:07:29.000Z","size":57094,"stargazers_count":9,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-10T12:07:24.510Z","etag":null,"topics":["censorship-circumvention","decentralized","internet","network","peer-to-peer","privacy","web"],"latest_commit_sha":null,"homepage":"https://proxy.hubfederation.com/~samizdat","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tokahuke.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","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}},"created_at":"2021-07-27T17:54:55.000Z","updated_at":"2025-01-10T04:07:32.000Z","dependencies_parsed_at":"2024-12-14T12:17:49.984Z","dependency_job_id":"fdb7075a-0c5c-400b-bb6d-5d06562899b1","html_url":"https://github.com/tokahuke/samizdat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokahuke%2Fsamizdat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokahuke%2Fsamizdat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokahuke%2Fsamizdat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokahuke%2Fsamizdat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tokahuke","download_url":"https://codeload.github.com/tokahuke/samizdat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248473127,"owners_count":21109628,"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":["censorship-circumvention","decentralized","internet","network","peer-to-peer","privacy","web"],"created_at":"2024-11-14T19:48:18.351Z","updated_at":"2025-04-11T20:11:35.422Z","avatar_url":"https://github.com/tokahuke.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Samizdat: your content, available.\n\n[![Continuous Integration](https://github.com/tokahuke/samizdat/actions/workflows/deploy-testbed.yaml/badge.svg?branch=stable)](https://github.com/tokahuke/samizdat/actions/workflows/deploy-testbed.yaml)\n![Version 0.1 Codename Vavilov](https://img.shields.io/badge/version-0.1--vavilov-informational)\n\n## Website\n\nSamizdat is pulling itself by its bootstraps!\nhttps://proxy.hubfederation.com/~samizdat\n\n## Donate\n\nIf you support this work, consider donating using crypto\n\n| Currency | Address                                      |\n|----------|----------------------------------------------|\n| `XMR`    | `86YcEFJSQXfZbPhjpDpabb5raQjVLWAfji3eMGebbj6QJnk1wXfgfqx9pgqURUWqMbjW7mNTC79guNEEsGPKJbRGKxEkrAN` |\n| `BTC`    | `bc1qseae89zr4z2lkl82nvvr6c9sl97agshapzeag5` |\n| `ETH`    | `0xba89B660eB6f5D894830C9273a5Dfb8dDc170cff` |\n\n\n## Introduction\n\nIn these troubling times, some people might find it hard to publish content to the web. Samizdat is a P2P network for sharing and publishing content without the need of a server, most of which are run by _them_. Self-publish your content today with Samizdat!\n\n### Warning\n\nThis is still a proof of concept implementation. So three caveats are in place:\n\n1. Don't rely on the availability of the network or of your content; have alternatives in place.\n2. Expect frequent breaking changes.\n3. Expect vulnerabilities. Do not use the network for sensitive content yet.\n\n\u003e How to make this warning disappear? Contribute! I am but one humble human being.\n\n## Project goals\n\nSamizdat (from a Russian term meaning \"self-publishing\") aims to provide a decentralized internet application that enables one to do the following:\n\n1. Be able to allow one to serve a public, static site without the need for a hosting service. The content is to be hosted in the person's own device or in caches from people who visit the site. (READY)\n\n2. Provide a human-friendly identifier for resources contained in this network, i.e., a URL scheme. This URL is to be content-addressed, not location-addressed. (IN CONSTRUCTION)\n\n3. Oblivious hosting: only the device serving the content and the device asking for the content can extract any information about the content or its metadata. (BY DESIGN)\n\n4. Do all this _easily_ and _conveniently_. Graphical interfaces, mobile apps and amenities are welcome. (IN CONSTRUCTION)\n\nWe are not quite there yet...\n \n## 📢 Help wanted! 🗯\n\nThese are important issues where help is most appreciated:\n\n* **Multi-platform support**: make Samizdat Node run on Windows and Android.\n    * Why it matters: this is an end-user product and end-users are mostly trapped in these platforms.\n    * Why it's hard: I'm too lazy to open my Windows 10. I'm bored by Android development.\n\n## Architecture\n\nThe project uses a hybrid peer-to-peer network, where nodes connect to hubs. The nodes are the consumers and producers of content; all content transmission is handled by the nodes. The hubs are used for routing, discovery and NAT traversal. One node can connect to many hubs simultaneously so that content can diffuse through different tribes with time.\n\n## Installation\n\nGo [here](https://proxy.hubfederation.com/_series/fGfgc7ibvwy26U7nHjcaAhYmyLvXl84Ld-qab_0PPJc/install). This is a _proxy_ to the Samizdat Network which will allow you to download the latest version from the network itself.\n\n## Quick start\n\nIn the installation, the `samizdat` cli tool is included. You can run `samizdat init` to create a new Samizdat project in your current directory. This will create a manifest file `Samizdat.toml` and a private manifest `.Samizdat.priv`, which will be added to your `.gitignore`. This file contains private credentials that you have to backup elsewhere dearly.\n\nIn your local hub, this will also create a new _series_, your very own microblog/directory in the Samizdat Network. To refresh the contents of your series, just do `samizdat commit` (or even better, `samizdat watch` for continuous refresh-on-save). Samizdat will run a build script that you supply in `Samizdat.toml`. Your content will be available in the URL:\n\n```\nhttp://localhost:4510/_series/\u003cseries key\u003e/path/to/stuff\n```\n\nDespite the `localhost`, this is a public URL. You can share with your friends that have Samizdat installed that \nthey will be abe to access it.\n\nThis is just the tip of the iceberg, however! Check out more [here](https://proxy.hubfederation.com/_series/fGfgc7ibvwy26U7nHjcaAhYmyLvXl84Ld-qab_0PPJc/docs).\n\n\n## Repository structure\n\n* `common`: Rust lib defining common code shared by other Samizdat crates. You will find here RPC definitions, Merkle tree implementation, etc...\n* `hub`: the Samizdat Hub crate. \n* `node`: the Samizdat Node crate.\n* `cli`: the Samizdat CLI crate.\n* `proxy`: a proxy to bridge a Samizdat Node to the open Web, used in [https://proxy.hubfederation.com](https://proxy.hubfederation.com).\n* `js`: the SamizdatJS library, with enables Web applications to interface with the local Samizdat node. \n* `install`: installation artifacts for end users in different platforms.\n* `simulate_net`: spawn your own network locally. Necessary for integration tests.\n* `blockchain`: smart contracts for the Samizdat identity. \n\n## Licensing\n\nAll code under the Samizdat Project is Free Software and is licensed to any individual or\n    organization under the AGPLv3 license. You are free to run, study, alter and redistribute\n    the software as you wish, as long as you abide by the terms of the aforementioned license.\n\nCopyright 2021 Tokahuke\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details. The text of this license\ncan be found in the [license](./license) file in this repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftokahuke%2Fsamizdat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftokahuke%2Fsamizdat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftokahuke%2Fsamizdat/lists"}