diff options
Diffstat (limited to 'docs/README.md')
| -rw-r--r-- | docs/README.md | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..745211d --- /dev/null +++ b/docs/README.md | |||
| @@ -0,0 +1,84 @@ | |||
| 1 | # ngit-grasp Documentation | ||
| 2 | |||
| 3 | ## Overview | ||
| 4 | |||
| 5 | This directory contains comprehensive documentation for the ngit-grasp project. | ||
| 6 | |||
| 7 | ## Documents | ||
| 8 | |||
| 9 | ### For Review | ||
| 10 | - **[../REVIEW_SUMMARY.md](../REVIEW_SUMMARY.md)** - Start here! Executive summary of the architecture investigation and recommendations | ||
| 11 | |||
| 12 | ### Architecture & Design | ||
| 13 | - **[ARCHITECTURE.md](ARCHITECTURE.md)** - Detailed technical architecture, component design, data flows, and implementation details | ||
| 14 | - **[DECISION_SUMMARY.md](DECISION_SUMMARY.md)** - Why we chose inline authorization over Git hooks | ||
| 15 | - **[COMPARISON.md](COMPARISON.md)** - Side-by-side comparison with the reference implementation (ngit-relay) | ||
| 16 | |||
| 17 | ### Technical References | ||
| 18 | - **[GIT_PROTOCOL.md](GIT_PROTOCOL.md)** - Git Smart HTTP protocol reference, pkt-line format, and parsing examples | ||
| 19 | - **[TEST_STRATEGY.md](TEST_STRATEGY.md)** - Comprehensive testing strategy including reusable GRASP compliance testing tool | ||
| 20 | |||
| 21 | ### Project Files | ||
| 22 | - **[../README.md](../README.md)** - Project overview, quick start, and feature list | ||
| 23 | - **[../.env.example](../.env.example)** - Configuration template | ||
| 24 | - **[../LICENSE](../LICENSE)** - MIT License | ||
| 25 | |||
| 26 | ## Reading Guide | ||
| 27 | |||
| 28 | ### If you want to understand the architecture decision: | ||
| 29 | 1. Read [REVIEW_SUMMARY.md](../REVIEW_SUMMARY.md) - Executive summary | ||
| 30 | 2. Read [DECISION_SUMMARY.md](DECISION_SUMMARY.md) - Detailed rationale | ||
| 31 | 3. Skim [COMPARISON.md](COMPARISON.md) - See how we differ from reference | ||
| 32 | |||
| 33 | ### If you want to implement: | ||
| 34 | 1. Read [ARCHITECTURE.md](ARCHITECTURE.md) - Component design and code structure | ||
| 35 | 2. Read [TEST_STRATEGY.md](TEST_STRATEGY.md) - Testing approach and compliance tool | ||
| 36 | 3. Read [GIT_PROTOCOL.md](GIT_PROTOCOL.md) - Git protocol details | ||
| 37 | 4. Review code examples in ARCHITECTURE.md | ||
| 38 | |||
| 39 | ### If you want to deploy: | ||
| 40 | 1. Read [README.md](../README.md) - Quick start | ||
| 41 | 2. Review [.env.example](../.env.example) - Configuration | ||
| 42 | 3. See deployment section in [ARCHITECTURE.md](ARCHITECTURE.md) | ||
| 43 | |||
| 44 | ### If you're comparing with ngit-relay: | ||
| 45 | 1. Read [COMPARISON.md](COMPARISON.md) - Detailed comparison | ||
| 46 | 2. See architecture diagrams in both COMPARISON.md and ARCHITECTURE.md | ||
| 47 | |||
| 48 | ## Key Concepts | ||
| 49 | |||
| 50 | ### Inline Authorization | ||
| 51 | The core architectural decision: we validate Git pushes **inside the HTTP handler** before spawning Git, rather than using Git's pre-receive hooks. | ||
| 52 | |||
| 53 | **Benefits:** | ||
| 54 | - Better error messages (HTTP responses vs. hook stderr) | ||
| 55 | - Simpler deployment (no hook management) | ||
| 56 | - Easier testing (pure Rust) | ||
| 57 | - Better performance (skip Git for invalid pushes) | ||
| 58 | |||
| 59 | ### GRASP Protocol | ||
| 60 | Git Relays Authorized via Signed-Nostr Proofs - a protocol for hosting Git repositories with Nostr-based authorization. | ||
| 61 | |||
| 62 | **Key Points:** | ||
| 63 | - Repository announcements (NIP-34 kind 30317) | ||
| 64 | - State announcements (NIP-34 kind 30318) | ||
| 65 | - Multi-maintainer support via recursive maintainer sets | ||
| 66 | - Push validation against signed state events | ||
| 67 | |||
| 68 | ### Technology Stack | ||
| 69 | - **actix-web**: HTTP server | ||
| 70 | - **git-http-backend**: Git protocol handling (Rust crate) | ||
| 71 | - **nostr-relay-builder**: Nostr relay infrastructure (rust-nostr) | ||
| 72 | - **tokio**: Async runtime | ||
| 73 | |||
| 74 | ## Status | ||
| 75 | |||
| 76 | **ALPHA** - Architecture design complete, implementation not yet started. | ||
| 77 | |||
| 78 | ## Contributing | ||
| 79 | |||
| 80 | See [../README.md](../README.md) for contribution guidelines. | ||
| 81 | |||
| 82 | ## Questions? | ||
| 83 | |||
| 84 | Open an issue or discussion on the repository. | ||