# ngit-grasp Documentation Welcome to the **ngit-grasp** documentation! We use the [Diátaxis](https://diataxis.fr/) framework to organize our documentation into four types, each serving a different purpose. ``` PRACTICAL THEORETICAL ───────── ─────────── LEARNING │ Tutorials │ Explanation │ │ │ │ │ Getting │ Architecture │ │ Started │ Decisions │ │ │ │ ├────────────────┼──────────────────┤ │ │ │ WORKING │ How-To │ Reference │ │ Guides │ │ │ │ API Docs │ │ Deployment │ Protocols │ │ Testing │ │ │ │ │ ``` ## 📚 Documentation Types ### 🎓 [Tutorials](tutorials/) - *Learning by Doing* **Purpose:** Learn the basics through practical steps **For:** Newcomers getting started **Style:** Step-by-step lessons with guaranteed outcomes - **[Getting Started](tutorials/getting-started.md)** - Your first ngit-grasp setup - **[Running Your First Audit](tutorials/first-audit.md)** - Using grasp-audit tool ### 🔧 [How-To Guides](how-to/) - *Solving Problems* **Purpose:** Accomplish specific tasks **For:** Users with basic knowledge solving real problems **Style:** Practical recipes and solutions - **[Deploy ngit-grasp](how-to/deploy.md)** - Production deployment guide - **[Configure Nix Flakes](how-to/nix-flakes.md)** - Nix development environment - **[Run Compliance Tests](how-to/test-compliance.md)** - GRASP compliance testing - **[Upgrade nostr-sdk](how-to/upgrade-nostr-sdk.md)** - Handling SDK upgrades ### 📖 [Reference](reference/) - *Technical Information* **Purpose:** Look up technical details **For:** Users who know what they're looking for **Style:** Dry, factual, comprehensive - **[Git Protocol](reference/git-protocol.md)** - Git Smart HTTP protocol details - **[GRASP Protocol](reference/grasp-protocol.md)** - GRASP specification details - **[Configuration](reference/configuration.md)** - All config options - **[API Reference](reference/api.md)** - Internal API documentation ### 💡 [Explanation](explanation/) - *Understanding Concepts* **Purpose:** Understand the "why" and design decisions **For:** Users wanting deeper understanding **Style:** Discussion, context, alternatives - **[Architecture Overview](explanation/architecture.md)** - System design and components - **[Inline Authorization](explanation/inline-authorization.md)** - Why we chose this approach - **[Comparison with ngit-relay](explanation/comparison.md)** - How we differ from reference - **[Design Decisions](explanation/decisions.md)** - Key architectural choices --- ## 🚀 Quick Start Paths ### I'm brand new to ngit-grasp 1. Read [README.md](../README.md) for project overview 2. Follow [Getting Started Tutorial](tutorials/getting-started.md) 3. Understand [Architecture Overview](explanation/architecture.md) ### I want to deploy ngit-grasp 1. Review [Configuration Reference](reference/configuration.md) 2. Follow [Deployment How-To](how-to/deploy.md) 3. Set up monitoring and backups ### I want to develop on ngit-grasp 1. Follow [Getting Started Tutorial](tutorials/getting-started.md) 2. Read [Architecture Overview](explanation/architecture.md) 3. Check [Nix Flakes How-To](how-to/nix-flakes.md) 4. Review [Test Strategy](how-to/test-compliance.md) ### I want to understand the design 1. Read [Inline Authorization Explanation](explanation/inline-authorization.md) 2. Review [Design Decisions](explanation/decisions.md) 3. Compare with [ngit-relay Comparison](explanation/comparison.md) ### I'm looking for specific information - **Protocol details?** → [Reference](reference/) - **Configuration options?** → [Configuration Reference](reference/configuration.md) - **Git protocol?** → [Git Protocol Reference](reference/git-protocol.md) --- ## 📂 Additional Resources ### [Archive](archive/) Historical session notes and completed work. Useful for understanding project evolution but not required reading. ### [Learnings](learnings/) **DEPRECATED** - Being migrated to Diátaxis structure: - Gotchas → How-To Guides - Patterns → Reference or Explanation - Notes → Appropriate category --- ## 🤝 Contributing to Documentation When adding documentation, ask yourself: **Is it a tutorial?** - Does it teach a beginner? - Is it a complete lesson with guaranteed outcome? - → Add to `tutorials/` **Is it a how-to guide?** - Does it solve a specific problem? - Is it a recipe for accomplishing a task? - → Add to `how-to/` **Is it reference material?** - Is it technical information? - Will people look it up when needed? - → Add to `reference/` **Is it explanation?** - Does it explain "why"? - Does it discuss alternatives or design? - → Add to `explanation/` See [Diátaxis documentation](https://diataxis.fr/) for more guidance. --- ## 📊 Project Status **ALPHA** - Under active development. Core functionality working, API may change. ### Completed - ✅ grasp-audit compliance testing tool - ✅ Nix flake development environment - ✅ nostr-sdk 0.43 upgrade - ✅ Documentation restructure (Diátaxis) ### In Progress - 🔄 Core ngit-grasp server implementation - 🔄 GRASP-01 compliance ### Planned - 🔜 GRASP-02 (Proactive Sync) - 🔜 GRASP-05 (Archive) --- ## 🔗 External Links - [GRASP Protocol Specification](https://gitworkshop.dev/danconwaydev.com/grasp) - [NIP-34 (Git Stuff)](https://nips.nostr.com/34) - [Diátaxis Framework](https://diataxis.fr/) - [rust-nostr Documentation](https://docs.rs/nostr-sdk/) --- *Documentation structure based on [Diátaxis](https://diataxis.fr/)* *Last updated: November 4, 2025*