Files
ngit-grasp/docs/how-to
DanConwayDev 874a8abe1d Merge relay.ngit.dev migration: bug fixes and migration tooling
This merge includes critical bug fixes and comprehensive migration tooling
developed during the relay.ngit.dev migration effort.

Bug Fixes:
- Fix git protocol error handling to return HTTP 200 with ERR pkt-line
- Fix naughty list false positives and DNS failure identification
- Fix database query filters in load_existing_events (remove .since())
- Fix OID fetch tracking to distinguish 0 OIDs from successful fetches
- Fix purgatory event source tracking for filtered expiry logging
- Implement OID retry logic for 'not our ref' errors

Migration Tools & Documentation:
- Complete 5-phase migration analysis pipeline with orchestration script
- Phase 1: Event fetching from source relay
- Phase 2: Git sync verification
- Phase 3: Categorization and relay comparison
- Phase 4: Log extraction (parse failures, purgatory expiry)
- Phase 5: Action classification for migration decisions
- Comprehensive migration guide with lessons learned
- Troubleshooting guide for permission and corruption issues

Configuration:
- Add NGIT_LOG_LEVEL configuration option
- Update git throttle limits to 60/minute
- Improve logging throughout for better observability
2026-02-03 15:18:23 +00:00
..
2025-11-04 10:25:53 +00:00

How-To Guides

Task-oriented documentation - Practical solutions to common problems.


What Are How-To Guides?

How-to guides are recipes that show you how to solve specific problems or accomplish particular tasks.

Characteristics:

  • ✅ Task-oriented (solve a problem)
  • ✅ Practical (actionable steps)
  • ✅ Assume basic knowledge
  • ✅ Focus on results
  • ✅ Can be followed in any order

Not how-to guides:

  • ❌ Complete lessons for beginners (those are Tutorials)
  • ❌ Technical specifications (those are Reference)
  • ❌ Conceptual discussions (those are Explanation)

Available How-To Guides

Configure Nix Flakes

Problem: Set up reproducible development environment
Difficulty: Intermediate

You'll learn:

  • Enable Nix flakes
  • Enter development environment
  • Work with subprojects
  • Troubleshoot common issues

Test Sync Against Production Data

Problem: Debug and improve sync using real-world data
Difficulty: Intermediate

You'll learn:

  • Run sync against production relays
  • Sanitize logs for LLM analysis
  • Identify common issues and patterns
  • Iteratively improve sync behavior

Planned How-To Guides

Deploy ngit-grasp

Status: 🔜 Planned (waiting for main server)

Problem: Deploy to production
You'll learn:

  • Server requirements
  • Reverse proxy setup (nginx/Caddy)
  • SSL/TLS configuration
  • Monitoring and logging

Run Compliance Tests

Status: 🔜 Planned

Problem: Test GRASP compliance
You'll learn:

  • Set up test relay
  • Run integration tests
  • Interpret results
  • Add custom tests

Upgrade nostr-sdk

Status: 🔜 Planned

Problem: Handle breaking changes in nostr-sdk
You'll learn:

  • Check for breaking changes
  • Update dependencies
  • Fix compilation errors
  • Test after upgrade

Configure Authentication

Status: 🔜 Planned (feature not yet implemented)

Problem: Secure your relay
You'll learn:

  • Enable authentication
  • Configure allowed users
  • Set up rate limiting
  • Monitor access

Backup and Restore

Status: 🔜 Planned

Problem: Protect your data
You'll learn:

  • Backup Git repositories
  • Backup Nostr events
  • Restore from backup
  • Automate backups

How to Use How-To Guides

  1. Find your problem - Browse or search for what you need
  2. Check prerequisites - Make sure you have required knowledge
  3. Follow the steps - Adapt to your specific situation
  4. Solve and move on - No need to read everything

Not sure if this is what you need?


Contributing How-To Guides

When writing a how-to guide:

DO:

  • ✅ Start with the problem/goal
  • ✅ List prerequisites clearly
  • ✅ Provide concrete steps
  • ✅ Include troubleshooting
  • ✅ Show examples
  • ✅ Link to related docs

DON'T:

  • ❌ Teach basics (link to Tutorials)
  • ❌ Explain every concept (link to Explanation)
  • ❌ List all options (link to Reference)
  • ❌ Make it a tutorial (stay focused on the task)

Template:

# How-To: [Task/Problem]

**Problem:** [What you're trying to accomplish]  
**Difficulty:** [Beginner/Intermediate/Advanced]  
**Time:** [Estimated time]

## Prerequisites
- [Required knowledge/tools]

## Solution

### Step 1: [Action]
[Instructions]

### Step 2: [Action]
[Instructions]

## Troubleshooting

### [Common problem]
**Solution:** [How to fix]

## Related Documentation
- [Links to relevant docs]

See Diátaxis: How-To Guides for detailed guidance.


Part of the ngit-grasp documentation using the Diátaxis framework.