<p align="center">
    <img src="../resources/provisioning_logo.svg" alt="Provisioning Logo" width="300"/>
</p>

<p align="center">
    <img src="../resources/logo-text.svg" alt="Provisioning" width="500"/>
</p>

# Development

Comprehensive guides for developers building extensions, custom providers, plugins, and
integrations on the Provisioning platform.

## Overview

Provisioning is designed to be extended and customized for specific infrastructure needs. This section provides everything needed to:

- **Build custom cloud providers** interfacing with any infrastructure platform via the Provider SDK
- **Create custom detectors** for domain-specific infrastructure analysis and anomaly detection
- **Develop task services** for specialized infrastructure operations beyond built-in services
- **Write Nushell plugins** for high-performance scripting extensions
- **Integrate external systems** via REST APIs and the MCP (Model Context Protocol)
- **Understand platform internals** for daemon architecture, caching, and performance optimization

The platform uses modern Rust with async/await, Nushell for scripting, and
Nickel for configuration - all with production-ready code examples.

## Development Guides

### Extension Development

- **[Extension Development](./extension-development.md)** - Framework for
  extensions (providers, task services, plugins, clusters) with type-safety

- **[Custom Provider Development](./custom-provider-development.md)** - Build
  cloud providers with async Rust, credentials, state, error recovery, testing

- **[Custom Task Services](./custom-task-services.md)** - Specialized service
  development for infrastructure operations

- **[Custom Detector Development](./custom-detector-development.md)** - Cost,
  compliance, performance, security risk detection

- **[Plugin Development](./plugin-development.md)** - Nushell plugins for
  high-performance scripting with FFI bindings

### Platform Internals

- **[Provisioning Daemon Internals](./provisioning-daemon-internals.md)** -
  TCP server, connection pooling, caching, metrics, shutdown, 50x speedup

### Integration and APIs

- **[API Guide](./api-guide.md)** - REST API integration with authentication,
  pagination, error handling, rate limiting

- **[Build System](./build-system.md)** - Cargo configuration, feature flags,
  dependencies, cross-platform compilation

- **[Testing](./testing.md)** - Unit, integration, property-based testing,
  benchmarking, CI/CD patterns

### Community

- **[Contributing](./contributing.md)** - Guidelines, standards, review
  process, licensing

## Quick Start Paths

### I want to build a custom provider

Start with [Custom Provider Development](./custom-provider-development.md) - includes
template, credential patterns, error handling, tests, and publishing workflow.

### I want to create custom detectors
See [Custom Detector Development](./custom-detector-development.md) - covers analysis frameworks, state tracking, testing, and marketplace distribution.

### I want to extend with Nushell
Read [Plugin Development](./plugin-development.md) - FFI bindings, type safety, performance optimization, and integration patterns.

### I want to understand system performance
Study [Provisioning Daemon Internals](./provisioning-daemon-internals.md) - architecture, caching strategy, connection pooling, metrics collection.

### I want to integrate external systems
Check [API Guide](./api-guide.md) - REST endpoints, authentication, webhooks, and integration patterns.

## Technology Stack

- **Language**: Rust (async/await with Tokio), Nushell (scripting)
- **Configuration**: Nickel (type-safe) + TOML (generated)
- **Testing**: Unit tests, integration tests, property-based tests
- **Performance**: Prometheus metrics, connection pooling, LRU caching
- **Security**: Post-quantum cryptography, type-safety, secure defaults

## Development Environment

All development builds with:

```bash
cargo build --release
cargo test --all
cargo clippy -- -D warnings
```

## Navigation

- **For architecture insights** → See `provisioning/docs/src/architecture/`
- **For API details** → See `provisioning/docs/src/api-reference/`
- **For examples** → See `provisioning/docs/src/examples/`
- **For deployment** → See `provisioning/docs/src/operations/`
