{"id":13632222,"url":"https://github.com/NostrGit/NostrGit","last_synced_at":"2025-04-18T02:32:12.744Z","repository":{"id":114344210,"uuid":"609896667","full_name":"NostrGit/NostrGit","owner":"NostrGit","description":"A truly censorship-resistant alternative to GitHub that has a chance of working","archived":false,"fork":false,"pushed_at":"2025-03-22T23:37:06.000Z","size":1306,"stargazers_count":280,"open_issues_count":53,"forks_count":25,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-04-12T21:58:29.880Z","etag":null,"topics":["git","nostr"],"latest_commit_sha":null,"homepage":"https://nostrgit.org","language":"TypeScript","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/NostrGit.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}},"created_at":"2023-03-05T15:09:38.000Z","updated_at":"2025-03-19T14:17:49.000Z","dependencies_parsed_at":"2024-01-22T01:13:41.342Z","dependency_job_id":"a3041f7e-eb48-4909-9e0f-d087f27f19a3","html_url":"https://github.com/NostrGit/NostrGit","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/NostrGit%2FNostrGit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NostrGit%2FNostrGit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NostrGit%2FNostrGit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NostrGit%2FNostrGit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NostrGit","download_url":"https://codeload.github.com/NostrGit/NostrGit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249414252,"owners_count":21267724,"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":["git","nostr"],"created_at":"2024-08-01T22:02:56.787Z","updated_at":"2025-04-18T02:32:12.737Z","avatar_url":"https://github.com/NostrGit.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# NostrGit\n\nA truly censorship-resistant alternative to GitHub that has a chance of working.\n\nRead about the vision [here](https://github.com/NostrGit/NostrGit/tree/main/documentation/vision.md).\n\n- [Next.js](https://nextjs.org)\n- [Tailwind CSS](https://tailwindcss.com)\n- [tRPC](https://trpc.io)\n- [ui.shadcn.com](https://ui.shadcn.com)\n\nWe use the [T3 stack](https://create.t3.gg/).\n\n\u003ca href=\"https://nostrgit.org\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/8019099/223422735-795b4341-5751-49ce-bffb-800ee81788d2.jpg\" alt=\"NostrGit\"\u003e\u003c/a\u003e\n\n# How to run locally (production)\n\n## Docker container git-nostr-bridge\n\nInstall [Docker](https://www.docker.com/products/docker-desktop/).\nThese instructions assume you are not running openSSH Server on port 22 on your machine.\n\n```bash\n# clone the NostrGit repository\n$ git clone https://github.com/NostrGit/NostrGit.git\n```\n\nEdit the `gitnostr/Dockerfile`\n  - replace the public key (hex) with your public key (hex) in the \"gitRepoOwners\" section of the JSON\n  - optional: add/remove some relays in the \"relays\" section of the JSON\n\n```bash\n# change the directory to NostrGit\n$ cd NostrGit\n# run the git-nostr-bridge container\n$ docker compose up \u003e /dev/null 2\u003e\u00261 \u0026\n```\n\n## git-nostr-cli\n\nTo run the cli tool for managing git repositories over nostr:\n\nMake sure you have go installed\n```bash\n$ go version\n```\n\nIf the command above doesnt print out something like \n\n`go version go1.20.2 linux/amd64`, \n\nyou can follow [these instructions](https://go.dev/doc/install) to install go on your system.\n\n```bash\n# change directory to gitnostr\n$ cd ../gitnostr/\n# compile the cli tool (requires go installation)\n$ make git-nostr-cli\n# Run the git-nostr-cli command once to create the default config file\n$ ./bin/gn\n```\n\nYou should get the message `no relays connected`.\n\nEdit the config file at `~/.config/git-nostr/git-nostr-cli.json`. The file should look something like this\n\n```JSON\n{\n    \"relays\": [\"wss://relay.damus.io\", \"wss://nostr.fmt.wiz.biz\", \"wss://nos.lol\"],\n    \"privateKey\": \"\", // your nostr private key (hex)\n    \"gitSshBase\": \"root@localhost\" // the docker containers expect this\n}\n```\n\nYou need to publish your public ssh key to the nostr relays to be able to interact with the git-nostr-bridge docker container.\nYou may need to replace id_rsa.pub with the correct public key file.\n\n```bash\n./bin/gn ssh-key add ~/.ssh/id_rsa.pub\n```\n\nCreate repository and clone it. Replace `\u003cpublickey\u003e` with the hex representation of your public key. If you are using a nip05 capable public key you can use the nip05 identifier instead.\n\n```bash\n$ ./bin/gn repo create \u003crepo_name\u003e\n$ ./bin/gn repo clone  \u003cpublickey\u003e:\u003crepo_name\u003e\n```\n\nTo be able to push to the repository you can set write permission with the following command.\n\n```bash\n# public key must be in the hex format\n$ ./bin/gn repo permission \u003crepo_name\u003e \u003cpublickey\u003e WRITE\n```\n\nIf you are using a nip05 capable public key you can use the nip05 identifier instead.\n\n```bash\n$ ./bin/gn repo permission username@relayaddr WRITE\n```\n\n# Development\n\nFork the repo\n\n```bash\n# install yarn packages\n$ yarn\n# run in development mode (localhost:3000)\n$ yarn dev\n```\n\n# Questions or discussions\n\nHave a question or a proposal? Create a [new issue](https://github.com/NostrGit/NostrGit/issues/new).\n\n# Contributing\n\nThe NostrGit project operates an open contributor model where anyone is welcome to contribute towards development in the form of peer review, documentation, testing and patches. Anyone is invited to contribute without regard to technical experience, \"expertise\", OSS experience, age, or other concern.\n\nIf you are new to contributing to open source projects, please see the [Open Source Guides](https://opensource.guide/how-to-contribute/) on how to get started.\n\nSee [contribution guidelines](https://github.com/NostrGit/NostrGit/blob/main/documentation/development/contributing.md).\n\nYou may also want to check out the [bitcoin-development](https://github.com/jonatack/bitcoin-development/blob/master/how-to-review-bitcoin-core-prs.md) repository about the principles of Bitcoin development in general. Most of them apply also here. \n\n## Contributors\n\n\u003cimg src=\"https://contrib.rocks/image?repo=nostrgit/nostrgit\" alt=\"list of contributors\" /\u003e\n\n# Roadmap\n\nProduct\n\nWe need to define the product roadmap. We need to figure out what features we want to implement. If you have any idea, please feel free to create a new issue.\n\nUI\n\n- [ ] Mobile Breakpoints\n- [ ] Code\n  - [ ] Clone with HTTPS\n  - [ ] Clone with SSH\n  - [ ] Download ZIP\n- [ ] Issues\n  - [ ] Issues list\n    - [ ] Filter by open / closed issues\n  - [ ] Single issue\n    - [ ] Show details about the issue\n    - [ ] Commenting / comment threads\n  - [ ] New issue page\n- [ ] Pull Requests\n  - [ ] Pull requests list\n  - [ ] Single pull request page\n  - [ ] New pull request page\n- [ ] Discussions\n- [ ] Insights\n  - [ ] Repo statistics\n    - Merged pull requests\n    - Open pull requests\n    - Closed issues\n    - New issues\n  - [ ] Tabs\n    - [ ] Contributors\n    - [ ] Commits\n    - [ ] Code frequency\n    - [ ] Dependency graph\n    - [ ] Forks\n- [ ] Settings\n  - [ ] Edit repository name\n  - [ ] Toggle features\n    - Wikis\n    - Issues\n    - Discussions\n    - Pull requests\n      - Allow merge commits\n      - Allow squash merging\n      - Allow rebase merging\n  - [ ] Danger zone\n    - Change repo visibility\n    - Transfer ownership\n    - Delete repo\n  - [ ] Settings tabs\n    - [ ] General\n    - [ ] Access (collaborators)\n      - [ ] View collaborators\n      - [ ] Add collaborators\n      - [ ] Remove collaborators\n    - [ ] Branches\n      - [ ] Branch protection rules\n    - [ ] Tags\n    - [ ] Actions\n    - [ ] Secrets and variables\n\nNostr\n\n- [ ] Login\n- [ ] Figure out decentralised data storage\n  - [ ] New repository: serve created repository with [GitTorrent](https://github.com/cjb/GitTorrent)\n  - [ ] Repo has a public key\n    ```JSON\n    {\n        \"pubkey\": \"abcd123...\",\n        \"nrepo\": \"nrepo1ris1683fw6n2mvhl5h6dhqd8mqfv3wmxnz4qph83ua4dk4006ezsrt5c24\"\n    }\n    ```\n  - [ ] Zap a repo\n    - [ ] Zap PRs\n  - [ ] Rate a repo\n  - [ ] Follow a repo\n  - [ ] Comment on a repo\n  - [ ] Add bounties\n\nSpecial Thanks\n\n\u003ca href=\"https://vercel.com?utm_source=nostrgit\u0026utm_campaign=oss\"\u003e\u003cimg src=\"https://images.ctfassets.net/e5382hct74si/78Olo8EZRdUlcDUFQvnzG7/fa4cdb6dc04c40fceac194134788a0e2/1618983297-powered-by-vercel.svg\" /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNostrGit%2FNostrGit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNostrGit%2FNostrGit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNostrGit%2FNostrGit/lists"}