A comprehensive TypeScript monorepo for integrating Git workflows with the Nostr protocol, enabling decentralized Git collaboration through NIP-34 events.
🎯 Purpose
This platform bridges Git version control with Nostr's decentralized network, allowing developers to:
- Publish Git repositories, patches, and issues as Nostr events
- Enable decentralized code collaboration without centralized platforms
- Integrate Git workflows with Nostr clients and relays
- Build Git-aware applications on the Nostr protocol
📦 Packages
Core Libraries
- @nostr-git/core – Core TypeScript library for creating, parsing, and publishing Git-related Nostr events (NIP-34)
- @nostr-git/shared-types – Shared TypeScript types and constants for Git/Nostr event structures
- @nostr-git/git-wrapper – Git operations wrapper with Nostr integration
- @nostr-git/ui – Svelte 5 component library with TailwindCSS for rendering Git and Nostr UI elements
Applications & Extensions
- Extension – Browser extension that adds Nostr publishing capabilities to GitHub
- VSCode-ngit – VS Code extension adding Nostr Git (
ngit
) support to the IDE
- Actions – GitHub Actions for automatically publishing Nostr Git events on push, issue creation, etc.
- Storybook – Component development and documentation environment
🚀 Quick Start
Prerequisites
Installation
# Clone the repository
git clone https://github.com/your-org/nostr-git.git
cd nostr-git
# Install dependencies
pnpm install
# Build all packages
pnpm build
Development
# Start development mode for all packages
pnpm watch:all
# Or watch specific packages
pnpm watch:core
pnpm watch:ui
# Run Storybook for UI development
cd packages/storybook
pnpm storybook
🏗️ Architecture
This monorepo follows a modular architecture where each package serves a specific purpose:
- Core: Event creation, parsing, and Nostr protocol integration
- UI: Reusable Svelte components for Git/Nostr interfaces
- Extensions: Platform-specific integrations (GitHub, VSCode)
- Actions: CI/CD automation for Nostr event publishing
📖 Documentation
🤝 Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes following our coding standards
- Run tests:
pnpm test
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
📄 License
MIT License - see LICENSE file for details.
🔗 Links