# Tutorials

**Learning-oriented documentation** - Learn by doing with step-by-step guidance.

---

## What Are Tutorials?

Tutorials are **lessons** that teach you how to use ngit-grasp through practical, hands-on steps.

**Characteristics:**
- ✅ Learning-oriented (teach beginners)
- ✅ Practical (you follow along)
- ✅ Step-by-step with guaranteed outcomes
- ✅ Complete from start to finish
- ✅ Safe to experiment with

**Not tutorials:**
- ❌ Problem-solving guides (those are How-To)
- ❌ Technical references (those are Reference)
- ❌ Conceptual explanations (those are Explanation)

---

## Available Tutorials

### [Getting Started](getting-started.md)
**Time:** 15-20 minutes  
**Learn:** Set up ngit-grasp development environment, build and test the code

**You'll accomplish:**
- Clone and build the project
- Set up Nix development environment
- Run tests successfully
- Understand project structure

**Start here if:** You're brand new to ngit-grasp

---

### [Running Your First Audit](first-audit.md)
**Time:** 10-15 minutes  
**Prerequisites:** [Getting Started](getting-started.md) completed  
**Learn:** Use grasp-audit to check GRASP compliance

**You'll accomplish:**
- Run compliance tests against a relay
- Interpret audit results
- Use the audit tool library
- Understand GRASP requirements

**Start here if:** You want to test GRASP compliance

---

## Planned Tutorials

### Deploying Your First GRASP Relay
**Status:** 🔜 Planned (waiting for main server implementation)

**You'll learn:**
- Deploy ngit-grasp to production
- Configure for your domain
- Set up HTTPS with reverse proxy
- Create your first repository

---

### Contributing Your First PR
**Status:** 🔜 Planned

**You'll learn:**
- Find an issue to work on
- Set up development environment
- Make changes and test
- Submit a pull request

---

## How to Use Tutorials

1. **Follow in order** - Each step builds on previous ones
2. **Actually do the steps** - Don't just read, type the commands
3. **Expect success** - If something fails, check troubleshooting
4. **Learn by doing** - Understanding comes from practice

**Not sure if this is what you need?**
- Want to solve a specific problem? → [How-To Guides](../how-to/)
- Looking for technical details? → [Reference](../reference/)
- Want to understand the design? → [Explanation](../explanation/)

---

## Contributing Tutorials

When writing a tutorial:

**DO:**
- ✅ Start with a clear learning goal
- ✅ Provide complete, tested steps
- ✅ Include expected output
- ✅ Add troubleshooting section
- ✅ Keep it focused (one topic)
- ✅ Test with a beginner

**DON'T:**
- ❌ Assume prior knowledge (or state prerequisites clearly)
- ❌ Skip steps ("obviously you would...")
- ❌ Explain every detail (link to Explanation docs)
- ❌ Try to cover everything (keep scope small)

See [Diátaxis: Tutorials](https://diataxis.fr/tutorials/) for detailed guidance.

---

*Part of the [ngit-grasp documentation](../README.md) using the [Diátaxis](https://diataxis.fr/) framework.*
