{"id":26820097,"url":"https://github.com/bitxenia/astrawiki","last_synced_at":"2025-04-24T03:10:22.326Z","repository":{"id":284983748,"uuid":"909473253","full_name":"bitxenia/astrawiki","owner":"bitxenia","description":"Decentralized p2p read-write wiki on IPFS","archived":false,"fork":false,"pushed_at":"2025-04-23T15:32:11.000Z","size":412,"stargazers_count":4,"open_issues_count":11,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-23T15:51:01.959Z","etag":null,"topics":["collaborative","decentralized","distributed","ipfs","libp2p","p2p","peer-to-peer","wiki","wikipedia"],"latest_commit_sha":null,"homepage":"https://bitxenia.eth.link","language":"TypeScript","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/bitxenia.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":"2024-12-28T20:07:35.000Z","updated_at":"2025-04-23T15:30:07.000Z","dependencies_parsed_at":"2025-04-14T18:32:19.625Z","dependency_job_id":"1c637385-b80f-4727-9e66-0557ea83b48f","html_url":"https://github.com/bitxenia/astrawiki","commit_stats":null,"previous_names":["bitxenia/ipfs-wiki-node","bitxenia/astrawiki"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitxenia%2Fastrawiki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitxenia%2Fastrawiki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitxenia%2Fastrawiki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitxenia%2Fastrawiki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bitxenia","download_url":"https://codeload.github.com/bitxenia/astrawiki/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250552075,"owners_count":21449165,"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":["collaborative","decentralized","distributed","ipfs","libp2p","p2p","peer-to-peer","wiki","wikipedia"],"created_at":"2025-03-30T06:17:44.037Z","updated_at":"2025-04-24T03:10:22.317Z","avatar_url":"https://github.com/bitxenia.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Astrawiki\n\nThe Bitxenia Astrawiki node is an implementation of a client for a decentralized peer-to-peer read-write wiki within the [IPFS](https://ipfs.tech) ecosystem. It leverages technologies such as [OrbitDB](https://github.com/orbitdb/orbitdb) for the database and [LibP2P](https://github.com/libp2p/js-libp2p) for peer-to-peer communication between collaborators. With this node, users can connect to an existing wiki or create their own, allowing to create, read, and edit articles in a collaborative manner.\n\nThe implementation focuses on providing a decentralized, distributed, and collaborative alternative to existing wikis. For this reason, only the collaborative nodes are responsible for the availability and persistence of the wiki.\n\nTo achieve true decentralization, all nodes that make up the wiki share the same responsibilities, making it easy to create or maintain a wiki separate from the one provided by Bitxenia. Additionally, no wiki depends on its original creators.\n\nBy using OrbitDB as a database, any user can create and edit articles in real-time.\n\nA _frontend_ client can be built using the node to make the wiki more accessible. The node can be used locally or from a web application. At Bitxenia, we provide our own [web client](https://github.com/bitxenia/astrawiki-web), but users are free to create their own if desired.\n\n## Install\n\n```sh\nnpm install @bitxenia/astrawiki\n```\n\n## Usage\n\nUsing the `createAstrawikiNode` init function you can create and connect the node to a wiki.\n\n```ts\nimport { createAstrawikiNode } from \"@bitxenia/astrawiki\";\n\nconst node = await createAstrawikiNode({\n  wikiName: \"bitxenia-wiki\",\n});\n\nconst articleList = await node.getArticleList();\nconsole.log(articleList);\n```\n\nUse the [Getting Started](https://github.com/bitxenia/astrawiki/tree/main/docs/getting_started.md) guide for an initial introduction to the Astrawiki node usage.\n\n## Documentation\n\nYou can find more advanced topics in our [docs](https://github.com/bitxenia/astrawiki/tree/main/docs).\n\n## Development\n\n**Clone and install dependencies:**\n\n```sh\ngit clone git@github.com:bitxenia/astrawiki.git\ncd astrawiki\nnpm install\n```\n\n### Run Tests\n\n```sh\nnpm run test\n```\n\n### Build\n\n```sh\nnpm run build\n```\n\n## Contribute\n\nContributions welcome! Please check out the issues.\n\n## Troubleshooting\n\n### The node cannot receive incoming connections and, as a result, cannot collaborate.\n\nIf the node is set to collaborate and it fails to do so, the reason should most likely be a port issue. The `LibP2P` implementation uses `UPnP` to automatically open ports and detect the public IP. If the modem is outdated, you will need to manually open the ports and specify the public IP when creating the node in the `createAstrawikiNode` init function.\n\nThe ports that need to be opened manually are:\n\n- `40001` used to receive `TCP` incoming connections.\n- `40002` used to receive `WebSocket` incoming connections.\n- `40003` used to receive `WebSocketSecure` upgraded by `autoTLS` incoming connections.\n\nIf this does not work, your ISP may be using Double NAT, which prevents incoming connections. In this case, you may need to contact your ISP to request a solution.\n\n## Other implementations\n\n- https://github.com/bitxenia/astrawiki-eth\n\n## License\n\nMIT (LICENSE-MIT / http://opensource.org/licenses/MIT)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitxenia%2Fastrawiki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbitxenia%2Fastrawiki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitxenia%2Fastrawiki/lists"}