{"id":32790044,"url":"https://github.com/shugur-network/nw-extention","last_synced_at":"2025-11-05T11:02:58.250Z","repository":{"id":318861552,"uuid":"1076743229","full_name":"Shugur-Network/nw-extention","owner":"Shugur-Network","description":"Browser extension for accessing decentralized websites on Nostr - Chrome \u0026 Firefox support","archived":false,"fork":false,"pushed_at":"2025-10-30T20:24:17.000Z","size":425,"stargazers_count":12,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-30T22:22:15.768Z","etag":null,"topics":["browser-extension","censorship-resistant","chrome","decentralized-web","firefox","nostr","nostr-protocol","web3"],"latest_commit_sha":null,"homepage":"https://nweb.shugur.com/","language":"JavaScript","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/Shugur-Network.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-15T09:29:45.000Z","updated_at":"2025-10-30T20:24:21.000Z","dependencies_parsed_at":"2025-10-16T21:26:42.652Z","dependency_job_id":"c74033ab-b5a7-44b1-aa53-a44c6002c5af","html_url":"https://github.com/Shugur-Network/nw-extention","commit_stats":null,"previous_names":["shugur-network/nw-extention"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Shugur-Network/nw-extention","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shugur-Network%2Fnw-extention","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shugur-Network%2Fnw-extention/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shugur-Network%2Fnw-extention/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shugur-Network%2Fnw-extention/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shugur-Network","download_url":"https://codeload.github.com/Shugur-Network/nw-extention/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shugur-Network%2Fnw-extention/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282807274,"owners_count":26730415,"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-11-05T02:00:05.946Z","response_time":58,"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":["browser-extension","censorship-resistant","chrome","decentralized-web","firefox","nostr","nostr-protocol","web3"],"created_at":"2025-11-05T11:01:24.879Z","updated_at":"2025-11-05T11:02:58.236Z","avatar_url":"https://github.com/Shugur-Network.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nostr Web Extension\n\nBrowse decentralized websites on Nostr - A censorship-resistant, verifiable, permanent web.\n\n[![Chrome Web Store](https://img.shields.io/chrome-web-store/v/hhdngjdmlabdachflbdfapkogadodkif?label=Chrome\u0026logo=googlechrome\u0026logoColor=white\u0026color=4285F4)](https://chromewebstore.google.com/detail/nostr-web-browser/hhdngjdmlabdachflbdfapkogadodkif)\n[![Firefox Add-on](https://img.shields.io/amo/v/nostr-web-browser?label=Firefox\u0026logo=firefox\u0026logoColor=white\u0026color=FF7139)](https://addons.mozilla.org/en-US/firefox/addon/nostr-web-browser/)\n[![Chrome Users](https://img.shields.io/chrome-web-store/users/hhdngjdmlabdachflbdfapkogadodkif?label=Chrome%20Users\u0026logo=googlechrome\u0026logoColor=white)](https://chromewebstore.google.com/detail/nostr-web-browser/hhdngjdmlabdachflbdfapkogadodkif)\n[![Firefox Users](https://img.shields.io/amo/users/nostr-web-browser?label=Firefox%20Users\u0026logo=firefox\u0026logoColor=white)](https://addons.mozilla.org/en-US/firefox/addon/nostr-web-browser/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n## 🚀 Quick Start\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n      \u003ca href=\"https://chromewebstore.google.com/detail/nostr-web-browser/hhdngjdmlabdachflbdfapkogadodkif\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Chrome-4285F4?style=for-the-badge\u0026logo=google-chrome\u0026logoColor=white\" alt=\"Chrome Web Store\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n      \u003ca href=\"https://addons.mozilla.org/en-US/firefox/addon/nostr-web-browser/\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Firefox-FF7139?style=for-the-badge\u0026logo=google-chrome\u0026logoColor=white\" alt=\"Firefox Add-ons\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Usage\n\n1. **Automatic Detection:** Just type any domain in your browser (e.g., `nweb.shugur.com`)\n2. **Manual Entry:** Click extension icon → Enter domain → Press Enter\n3. **Browse:** Navigate links, use back/forward, and enjoy decentralized web!\n\n## Security\n\nThe extension implements multiple security layers:\n\n1. **Author Pinning** - DNS TXT record pins site publisher's public key\n2. **Subresource Integrity** - SHA256 verification for JavaScript\n3. **Sandboxed Rendering** - Isolated execution environment\n4. **Rate Limiting** - Protection against DoS attacks\n\n## 🏗️ How It Works\n\n```\nUser types domain → DNS lookup → Fetch from Nostr relays → Verify integrity → Render in sandbox\n```\n\n1. Check DNS TXT record at `_nweb.\u003cdomain\u003e` for publisher pubkey and relay list\n2. Query relays for entrypoint (kind 11126) pointing to site index\n3. Fetch site index (kind 31126) listing all page manifests\n4. Fetch page manifest (kind 1126) for current route\n5. Fetch all assets (kind 1125) - HTML, CSS, JS, images, etc.\n6. Verify author signatures and JavaScript integrity (SRI)\n7. Assemble HTML and render in sandboxed iframe\n\n## 🚀 Performance\n\n- **First-EOSE Strategy** - Returns after fastest relay (200-500ms typical)\n- **Connection Pooling** - Persistent WebSocket connections\n- **Smart Caching** - 7-day asset cache, 30-second manifest cache\n- **Event Deduplication** - Filters duplicates from multiple relays\n- **Parallel Fetching** - Queries all relays simultaneously\n\n## 🛠️ Development\n\n```bash\n# Setup\ngit clone https://github.com/Shugur-Network/nw-extention.git\ncd nw-extention\nnpm install\n\n# Build\nnpm run build            # Build both browsers\nnpm run build:chrome     # Chrome only\nnpm run build:firefox    # Firefox only\n\n# Test\nnpm test                 # Run test suite\nnpm run validate         # Validate structure\n\n# Output: dist/chrome/ and dist/firefox/\n```\n\n## 📋 Project Structure\n\n```\nnw-extention/\n├── src/\n│   ├── chrome/              # Chrome-specific (service worker + offscreen)\n│   ├── firefox/             # Firefox-specific (background script)\n│   ├── shared/              # Shared modules (logger, constants, errors)\n│   └── ui/                  # UI components (popup, viewer, settings, sandbox)\n├── test/                    # Test suite\n├── scripts/                 # Build scripts\n└── public/                  # Static assets\n```\n\n## 🤝 Contributing\n\nContributions welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch\n3. Add tests for new code\n4. Submit a Pull Request\n\n## 📄 License\n\nMIT License - See [LICENSE](LICENSE) file for details\n\n## 🔗 Links\n\n- **Website:** https://nweb.shugur.com\n- **GitHub:** https://github.com/Shugur-Network/nw-extention\n- **Issues:** https://github.com/Shugur-Network/nw-extention/issues\n- **Publisher Tool:** [nw-publisher on npm](https://www.npmjs.com/package/nw-publisher)\n- **Chrome Store:** https://chromewebstore.google.com/detail/nostr-web-browser/hhdngjdmlabdachflbdfapkogadodkif\n- **Firefox Add-ons:** https://addons.mozilla.org/en-US/firefox/addon/nostr-web-browser/\n\n## 💬 Support\n\n- **Issues:** [GitHub Issues](https://github.com/Shugur-Network/nw-extention/issues)\n- **Email:** support@shugur.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshugur-network%2Fnw-extention","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshugur-network%2Fnw-extention","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshugur-network%2Fnw-extention/lists"}