Files

210 lines
5.1 KiB
Markdown

# Tutorial: Getting Started with ngit-grasp
**Purpose:** Learn the basics of ngit-grasp through hands-on setup
**Time:** 15-20 minutes
**Prerequisites:** Basic Git and command-line knowledge
---
## What You'll Learn
By the end of this tutorial, you will:
- ✅ Have a working ngit-grasp development environment
- ✅ Understand the basic project structure
- ✅ Run the test suite successfully
- ✅ Know where to go next
---
## Step 1: Clone the Repository
First, get the source code:
```bash
git clone https://gitworkshop.dev/ngit-grasp
cd ngit-grasp
```
**What just happened?** You cloned the ngit-grasp repository from the GRASP-enabled Git server.
---
## Step 2: Set Up Nix Development Environment
ngit-grasp uses Nix flakes for reproducible development environments.
```bash
# Enter the development environment
nix develop
# You should see a new shell with all dependencies available
```
**What just happened?** Nix read `flake.nix` and created a shell with:
- Rust toolchain (cargo, rustc)
- Git
- All required system libraries
**Tip:** If `nix develop` doesn't work, you might be using an old Nix version. See the [Nix Flakes How-To](../how-to/nix-flakes.md) for help.
---
## Step 3: Explore the Project Structure
Take a look around:
```bash
# View the project structure
ls -la
# Key directories:
# - src/ - Main ngit-grasp source code (coming soon)
# - grasp-audit/ - Compliance testing tool (working)
# - docs/ - Documentation (you are here!)
```
**What you're seeing:**
- `grasp-audit/` is a **subproject** with its own Cargo workspace
- Main ngit-grasp server implementation is planned but not yet started
- Documentation uses Diátaxis framework (tutorials, how-to, reference, explanation)
---
## Step 4: Work with grasp-audit
The compliance testing tool is the first working component. Let's try it:
```bash
# Navigate to grasp-audit
cd grasp-audit
# Enter its development environment
nix develop
# Build the project
cargo build
# Run unit tests
cargo test
```
**What just happened?**
- `grasp-audit` has its own `flake.nix` for isolated dependencies
- Unit tests run without external dependencies
- Integration tests (marked `#[ignore]`) require a Nostr relay
---
## Step 5: Run Your First Audit (Optional)
If you want to try the audit tool against a real relay:
```bash
# In a separate terminal, start a test relay:
docker run --rm -p 7000:7000 scsibug/nostr-rs-relay
# Back in grasp-audit directory:
cargo test --ignored -- --test-threads=1
```
**What just happened?** Integration tests connected to the relay on port 7000 and verified GRASP compliance.
**Note:** This step is optional. The relay must be running for these tests to pass.
---
## Step 6: Explore the Code
Let's look at a simple example:
```bash
# From grasp-audit directory
cat examples/simple_audit.rs
```
This shows how to use the `grasp-audit` library to check GRASP compliance.
---
## Step 7: Read the Documentation
Now that you have a working setup, explore the documentation:
```bash
# From project root
cd ..
ls docs/
```
**Recommended reading order:**
1. [Architecture Overview](../explanation/architecture.md) - Understand the design
2. [Inline Authorization](../explanation/inline-authorization.md) - Key decision
3. [Git Protocol Reference](../reference/git-protocol.md) - Technical details
---
## What You've Accomplished
Congratulations! You now have:
✅ A working Nix development environment
✅ Built and tested the grasp-audit tool
✅ Understanding of the project structure
✅ Knowledge of where to find more information
---
## Next Steps
### If you want to contribute:
1. Read [Architecture Overview](../explanation/architecture.md)
2. Check open issues on the repository
3. Review [Design Decisions](../explanation/decisions.md)
### If you want to deploy:
1. Follow [Deployment How-To](../how-to/deploy.md)
2. Review [Configuration Reference](../reference/configuration.md)
### If you want to understand GRASP:
1. Read [GRASP Protocol Reference](../reference/grasp-protocol.md)
2. Review [Comparison with ngit-relay](../explanation/comparison.md)
### If you want to run compliance tests:
1. Follow [Running Your First Audit Tutorial](first-audit.md)
2. Review [Compliance Testing How-To](../how-to/test-compliance.md)
---
## Troubleshooting
### "nix develop" doesn't work
- You might need Nix with flakes enabled
- See [Nix Flakes How-To](../how-to/nix-flakes.md)
### Build errors in grasp-audit
- Make sure you're in the `grasp-audit` directory
- Run `nix develop` first
- Check that you have network access (Cargo needs to download crates)
### Tests fail
- Unit tests should always pass
- Integration tests (`--ignored`) require a relay on port 7000
- Use `--test-threads=1` for integration tests
---
## Summary
You've successfully set up ngit-grasp and learned:
- How to use Nix flakes for development
- The project structure (main server + grasp-audit tool)
- How to build and test the code
- Where to find documentation
**Ready for more?** Try the [First Audit Tutorial](first-audit.md) next!
---
*Part of the [ngit-grasp tutorials](./)*
*Next: [Running Your First Audit](first-audit.md)*