# IndieWeb Library
A Rust library for implementing IndieWeb standards and algorithms.
## Overview
Provides tools for IndieWeb protocols including authentication, publishing, and communication standards.
## Installation
Install from crates.io for stable releases:
```bash
cargo add indieweb
```
Or from Git for the latest development version:
```bash
cargo add --git https://git.sr.ht/~jacky/indieweb-rust indieweb
```
## Modules
- **Algorithms**: Link resolution, authorship detection, representative h-card parsing
- **Standards**: IndieAuth, Micropub, Webmention, WebSub implementations
- **Traits**: Common interfaces for IndieWeb interactions
## Experimental Features
The following features are experimental and may change in future releases. Enable them with Cargo feature flags:
| WebSub | Real-time content notification protocol | [WebSub](https://www.w3.org/TR/websub/) |
| Microsub | Feed consumption and interaction API | [Microsub](https://indieweb.org/Microsub-spec) |
| Vouch | Anti-spam extension for Webmention | [Vouch](https://indieweb.org/Vouch) |
| Salmention | Upstream response propagation | [Salmention](https://indieweb.org/Salmention) |
| Authorship | Post authorship resolution algorithm | [Authorship](https://indieweb.org/authorship) |
| Micropub Channels | Channel management extensions | [Channels](https://indieweb.org/channels) |
| Micropub Syndication | Content syndication extensions | [Syndication](https://indieweb.org/syndication) |
| Micropub Relations | Post relationship extensions | [Relations](https://indieweb.org/relation) |
### Usage Examples
```toml
# Enable WebSub support
indieweb = { version = "0.6", features = ["experimental_websub"] }
# Enable multiple experimental features
indieweb = { version = "0.6", features = ["experimental_websub", "experimental_microsub"] }
# Enable all experimental features
indieweb = { version = "0.6", features = ["experimental"] }
```
**Note:** Experimental features may have breaking changes between releases. Use with caution in production applications.
## Usage
For local development, add to your Cargo.toml:
```toml
[dependencies]
indieweb = { path = "../path/to/library" }
```
For detailed API usage, see the source code.