upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/docs/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/README.md')
-rw-r--r--docs/README.md84
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
5This 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:
291. Read [REVIEW_SUMMARY.md](../REVIEW_SUMMARY.md) - Executive summary
302. Read [DECISION_SUMMARY.md](DECISION_SUMMARY.md) - Detailed rationale
313. Skim [COMPARISON.md](COMPARISON.md) - See how we differ from reference
32
33### If you want to implement:
341. Read [ARCHITECTURE.md](ARCHITECTURE.md) - Component design and code structure
352. Read [TEST_STRATEGY.md](TEST_STRATEGY.md) - Testing approach and compliance tool
363. Read [GIT_PROTOCOL.md](GIT_PROTOCOL.md) - Git protocol details
374. Review code examples in ARCHITECTURE.md
38
39### If you want to deploy:
401. Read [README.md](../README.md) - Quick start
412. Review [.env.example](../.env.example) - Configuration
423. See deployment section in [ARCHITECTURE.md](ARCHITECTURE.md)
43
44### If you're comparing with ngit-relay:
451. Read [COMPARISON.md](COMPARISON.md) - Detailed comparison
462. See architecture diagrams in both COMPARISON.md and ARCHITECTURE.md
47
48## Key Concepts
49
50### Inline Authorization
51The 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
60Git 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
80See [../README.md](../README.md) for contribution guidelines.
81
82## Questions?
83
84Open an issue or discussion on the repository.