{"id":19365703,"url":"https://github.com/ryanleecode/cyperdocs","last_synced_at":"2026-06-12T13:31:51.111Z","repository":{"id":43595453,"uuid":"177056691","full_name":"ryanleecode/Cyperdocs","owner":"ryanleecode","description":"Peer to Peer Document Editing Colloboration Tool","archived":false,"fork":false,"pushed_at":"2023-01-03T19:20:08.000Z","size":13171,"stargazers_count":0,"open_issues_count":29,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-24T13:23:03.266Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ryanleecode.png","metadata":{"files":{"readme":"README.Md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-22T02:18:45.000Z","updated_at":"2019-07-15T00:08:43.000Z","dependencies_parsed_at":"2023-02-01T09:15:40.160Z","dependency_job_id":null,"html_url":"https://github.com/ryanleecode/Cyperdocs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ryanleecode/Cyperdocs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanleecode%2FCyperdocs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanleecode%2FCyperdocs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanleecode%2FCyperdocs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanleecode%2FCyperdocs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryanleecode","download_url":"https://codeload.github.com/ryanleecode/Cyperdocs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanleecode%2FCyperdocs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34247461,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"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":[],"created_at":"2024-11-10T07:41:58.005Z","updated_at":"2026-06-12T13:31:51.089Z","avatar_url":"https://github.com/ryanleecode.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CypherDocs\n\nCypherdocs is a peer-to-peer document editing collaboration tool. Documents are encrypted using `Nucypher` and are uploaded to [Swarm](https://swarm-gateways.net/). However, primarily, Cypherdocs uses `Nucypher` to secure WebRTC websocket connection between its peers using a self devised handshake protocol.\n\nThis [project](https://coinlist.co/build/nucypher/projects/1f1a6229-8d20-43b9-b762-e62d0307c1ec) was submitted to the Nucypher Coinlist hackathon.\n\n\n## Demo Video\n\nA demostration video of how to install and it how it works can be found [here](https://www.youtube.com/watch?v=o8f9SGw5PrI)!\n\n### Technical Specification\n\nThe technical specification can be found [here](./TECHNICAL_SPECIFICATION.MD)\n\n## Requirements\n\n* Node v10+\n* Pipenv\n\n## Installation\n\n### Install Nucypher Fork\n\nThe fork adds the following features\n\n* Enables CORs support, so my browser can talk to the nodes\n* Makes the expiration date on grants actually work\n* Allows Bob to retrieve multiple times\n\n```sh\ngit clone https://github.com/drdgvhbh/nucypher.git\ncd nucypher\npipenv install\npipenv shell\npipenv run install-solc\npip3 install .\n```\n\nStart the Ursula Node.\n\n```sh\nnucypher ursula run --federated-only --dev\n```\n\n### Clone This Repo\n\n```sh\ngit clone https://github.com/drdgvhbh/nucypher-hackathon.git\ncd nucypher-hackathon\n```\n\n#### Start the Peer Server\n\nThis server is basically the stun/turn/signalling server for Web RTC. You can read more about it [here](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling#The_signaling_server).\n\n```sh\ncd server\nnpm install\nnpm run build\nnpm run host\n```\n\n#### Use Ngrok\n\nWe'll need an `https` address to use this application. Go ahead and install [Ngrok](https://ngrok.com/) so you can expose your local server as https.\n\nOnce installed run\n\n```sh\nngrok http 6666\n```\n\nCopy the https url created by ngrok. For example `https://28749c87.ngrok.io`.\n\n\n#### Setup Client\n\nThis assumes you have returned to the root of the `nucypher-hackathon` project\n\n```sh\ncd client\ncp .env.example .env\n```\n\nPaste the url created by ngrok in the field called `REACT_APP_PEER_SERVER_HOST`. You can leave the rest of the parameters as default.\n\n\n##### Development\n\n```sh\nnpm run start\n```\n\n##### Production\n\n```sh\nnpm run build\nserve -s build\n```\n\n### Running\n\nNavigate to http://localhost:3000 or http://localhost:5000 in production mode.\n\nYou should now have the peer server, web client, and nucypher Ursula node running.\n\nYou'll now get to choose to be Alice or Bob. For the purposes of peer to peer communicate. Simply open another tab and choose the other respective character. From the browser's point of view, both your tabs will be considered peers, even though you're on the same computer of course.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryanleecode%2Fcyperdocs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryanleecode%2Fcyperdocs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryanleecode%2Fcyperdocs/lists"}