telemetry-kit 0.3.0

Privacy-first, batteries-included telemetry toolkit for Rust applications with OpenTelemetry
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
<div align="center">

![Logo](./logo.svg)

_Privacy-first usage analytics for Rust open source projects - understand how your CLI tools and libraries are used in the wild_

[![Crates.io](https://img.shields.io/crates/v/telemetry-kit.svg)](https://crates.io/crates/telemetry-kit)
[![Documentation](https://img.shields.io/badge/docs-docs.telemetry--kit.dev-blue)](https://docs.telemetry-kit.dev)
[![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)](LICENSE)

**telemetry-kit** helps open source maintainers understand how their tools are used in the wild. Add privacy-first telemetry in 3 lines of code. Self-host or use our managed service. Perfect for CLI tools, libraries, and Rust applications.

</div>


## ๐ŸŽ‰ Currently Working (v0.2.0-alpha.1)

The following features are **fully implemented and tested**:

- โœ… **Interactive Consent Prompts**: First-run consent dialogs for privacy compliance (NEW!)
- โœ… **Smart Instrumentation Recommendations**: AI-powered code analysis suggesting where to add telemetry (NEW!)
- โœ… **Auto-Sync Background Task**: Automatic event synchronization in the background
- โœ… **SQLite โ†’ Service Sync Protocol**: Offline-first event buffering with HMAC-SHA256 authentication
- โœ… **Privacy-First User IDs**: Anonymous client identifiers with `client_` prefix (SHA-256 hashed machine IDs)
- โœ… **Event Tracking**: Command and feature event builders with fluent API
- โœ… **Ingestion Server**: Production-ready Rust server with PostgreSQL + Redis
- โœ… **Rate Limiting**: Token-based rate limits (Free/Pro/Business/Enterprise tiers)
- โœ… **Replay Protection**: Nonce-based duplicate request detection
- โœ… **Batch Ingestion**: 1-1000 events per request with partial success handling
- โœ… **Docker Deployment**: Complete docker-compose stack for local development

### Quick Start with Working Features

```bash
# 1. Start the server
cd server
docker compose up -d

# 2. Run the end-to-end test
cd ..
cargo run --example e2e_sync_test
```

See [DEPLOYMENT_GUIDE.md](project-docs/DEPLOYMENT_GUIDE.md) for complete setup instructions.

### Auto-Sync Background Task (NEW! ๐ŸŽ‰)

Events are now automatically synced in the background - no manual `.sync()` calls required!

```rust
use telemetry_kit::prelude::*;

#[tokio::main]
async fn main() -> Result<()> {
    // Initialize with auto-sync (enabled by default)
    let telemetry = TelemetryKit::builder()
        .service_name("my-app")?
        .with_sync_credentials(org_id, app_id, token, secret)?
        .auto_sync(true)              // Enable auto-sync (default: true)
        .sync_interval(60)            // Sync every 60 seconds (default)
        .sync_on_shutdown(true)       // Sync before exit (default: true)
        .build()?;

    // Track events - they sync automatically in the background
    telemetry.track_command("build", |event| {
        event.success(true).duration_ms(1234)
    }).await?;

    // Graceful shutdown with final sync
    telemetry.shutdown().await?;
    Ok(())
}
```

**Features:**
- Background tokio task syncs events at configurable intervals
- Graceful shutdown with optional final sync
- Respects DO_NOT_TRACK environment variable
- Exponential backoff on sync failures
- Thread-safe implementation

See [examples/auto_sync.rs](examples/auto_sync.rs) for a complete example.

### CLI Tool (NEW! ๐ŸŽ‰)

Manage telemetry configuration and operations from the command line.

```bash
# Install CLI
cargo install telemetry-kit --features cli

# Create a new project with telemetry pre-configured
telemetry-kit new my-app                    # CLI application
telemetry-kit new my-lib -p lib             # Library
telemetry-kit new my-api -p web --with-sync # Web service with sync

# Analyze code for instrumentation opportunities (NEW!)
telemetry-kit analyze                       # Analyze current directory
telemetry-kit analyze --detailed            # Show detailed recommendations with code snippets
telemetry-kit analyze --path src/           # Analyze specific directory
telemetry-kit analyze --format json         # Output as JSON

# Interactive setup (for existing projects)
telemetry-kit init

# View statistics
telemetry-kit stats

# Test sync credentials
telemetry-kit test

# Validate configuration
telemetry-kit validate

# Clean local events
telemetry-kit clean
```

**Available Commands:**
- `new` - Create new projects with telemetry pre-configured
- `analyze` - Get smart recommendations on where to add instrumentation (NEW!)
- `init` - Interactive project setup with credential configuration
- `test` - Validate sync credentials
- `stats` - View event statistics (total, synced, unsynced)
- `sync` - Manually trigger synchronization
- `validate` - Validate configuration
- `clean` - Clear local event database

See [CLI.md](project-docs/CLI.md) for complete CLI documentation.

---

## ๐ŸŽฏ The Problem

As an open source maintainer, you want to understand:
- Which features are actually used vs ignored
- Where users encounter errors or confusion
- How your CLI tool performs in real-world environments
- Whether your library is used correctly

But current telemetry solutions are:
- **Too complex**: Setting up OpenTelemetry requires understanding multiple crates and writing verbose boilerplate
- **Not opinionated**: You don't know *what* to track or *where* to add instrumentation
- **Privacy-blind**: Easy to accidentally log PII, risking your users' trust
- **CLI-unfriendly**: Most tools designed for long-running services, not CLI applications
- **Hard to self-host**: Commercial solutions or complex infrastructure required
- **Trust issues**: Users disable telemetry because they don't trust what's collected

## โœจ The Solution

```rust
use telemetry_kit::prelude::*;

#[tokio::main]
#[telemetry_kit::instrumented]  // ๐ŸŽ‰ That's it!
async fn main() {
    telemetry_kit::init()
        .service_name("my-awesome-cli")
        .endpoint("https://telemetry.myapp.com")
        .anonymous()
        .init();
    
    // Your code here - automatically instrumented!
}
```

**What you get as an OSS maintainer:**
- โœ… **3 lines instead of 50+**: Sensible defaults, zero boilerplate
- ๐ŸŽฏ **Smart instrumentation**: Auto-detect CLI commands, errors, and performance bottlenecks
- ๐Ÿ”’ **Privacy-first**: Built-in anonymization, GDPR-compliant, earns user trust
- ๐Ÿš€ **CLI-optimized**: Works with short-lived processes, offline-capable
- ๐Ÿ“ฆ **Self-hostable**: Simple Docker-based collection server included
- ๐Ÿค– **AI-suggested**: Get recommendations on what to instrument
- ๐Ÿ“Š **GitHub Badges**: Show usage metrics in your README
- ๐Ÿ‘ฅ **Public Dashboards**: Share anonymous analytics with your community

## ๐ŸŒŸ Key Features

### For Open Source Maintainers

**Understand Your Users Without Compromising Their Privacy:**

```rust
// Add to your CLI tool or library
let telemetry = TelemetryKit::builder()
    .service_name("my-awesome-cli")?
    .service_version(env!("CARGO_PKG_VERSION"))
    .prompt_for_consent()?       // Ask users first
    .build()?;

// Track what matters
telemetry.track_command("build", |event| {
    event.success(true).duration_ms(1234)
}).await?;
```

**What You Can Learn:**
- ๐Ÿ“Š **Feature Usage**: Which commands/features are popular vs unused
- โš ๏ธ **Error Patterns**: Where users struggle or encounter bugs
- โšก **Performance**: Real-world execution times and bottlenecks
- ๐ŸŒ **Platform Distribution**: OS/architecture breakdown
- ๐Ÿ“ˆ **Adoption Trends**: New vs returning users, version migration

**Build Trust With Your Community:**
- ๐Ÿ”’ **Transparent**: Users see exactly what you collect
- ๐Ÿ›‘ **Respectful**: DO_NOT_TRACK honored automatically
- โœ… **Consent-First**: Optional interactive prompts
- ๐Ÿ“– **Open Source**: Inspect the code, self-host if preferred
- ๐ŸŽฏ **Anonymous**: No PII, just anonymous usage patterns

**Showcase Your Impact:**
- ๐Ÿ† Add usage badges to your README: ![Downloads]https://img.shields.io/badge/active_users-1.2K%2Fmo-blue
- ๐Ÿ“Š Share public dashboards with your community
- ๐Ÿ“ˆ Show growth and adoption metrics to sponsors

### Zero-Config Telemetry
```rust
// Literally one line
telemetry_kit::init().auto_configure()?;
```

### Privacy Controls
```rust
telemetry_kit::init()
    .anonymous()                    // Anonymous user IDs
    .sanitize_emails()              // Hash email addresses
    .exclude_env_vars()             // Don't capture environment
    .gdpr_compliant()               // Full GDPR compliance
    .consent_prompt()               // Ask user on first run
    .init();
```

### Smart Instrumentation (NEW! ๐ŸŽ‰)

Enable automatic function instrumentation with the `macros` feature:

```rust
use telemetry_kit::prelude::*;

#[instrument]  // Auto-track duration
async fn fetch_data(url: &str) -> Result<Data, Error> {
    // Function execution is automatically timed
    // Works with both sync and async functions
    // Supports Result types for success/failure tracking
    let response = reqwest::get(url).await?;
    let data = response.json().await?;
    Ok(data)
}
```

**Features:**
- Automatic execution timing for all instrumented functions
- Works with async and sync functions
- Supports functions with or without Result return types
- Zero-overhead when macros feature is disabled
- Compile-time code generation

Enable with:
```toml
[dependencies]
telemetry-kit = { version = "0.2", features = ["macros"] }
```

See [examples/instrument_macro.rs](examples/instrument_macro.rs) for a complete example.

**Note:** Currently the macro measures timing but doesn't send telemetry yet. Full telemetry integration coming soon!

### CLI-Specific Features
```rust
use telemetry_kit::cli::*;

#[derive(Parser)]
#[command(name = "my-cli")]
struct Cli {
    #[command(subcommand)]
    command: Commands,
}

// Automatically tracks:
// - Which commands are used
// - Command duration
// - Success/failure rates
// - Anonymous usage patterns
```

## ๐Ÿ—บ๏ธ Roadmap

### Phase 1: Foundation (v0.1.0) - Q1 2025
- [ ] Core telemetry abstraction over OpenTelemetry
- [ ] Privacy-first defaults (anonymization, sanitization)
- [ ] Basic instrumentation macros
- [ ] Simple OTLP export
- [ ] Documentation and examples

### Phase 2: Developer Experience (v0.2.0) - Q2 2025
- [ ] CLI scaffolding tool (`telemetry-kit init`)
- [ ] Auto-detection of instrumentation points
- [ ] Smart suggestions (analyze code, suggest where to add tracking)
- [ ] Pre-built configuration templates
- [ ] VS Code extension for inline suggestions

### Phase 3: CLI Optimization (v0.3.0) - Q2 2025
- [ ] Short-lived process handling
- [ ] Offline caching with automatic sync
- [ ] User consent flow (first-run prompts)
- [ ] Minimal overhead (<1ms impact)
- [ ] Graceful degradation when server unavailable

### Phase 4: Self-Hosting (v0.4.0) - Q3 2025
- [ ] Simple collection server (Docker one-liner)
- [ ] Built-in dashboard for basic analytics
- [ ] SQLite/PostgreSQL storage backends
- [ ] REST API for custom integrations
- [ ] Pre-built dashboards for common patterns

### Phase 5: Advanced Features (v0.5.0+) - Q4 2025
- [ ] AI-powered insights (usage patterns, anomaly detection)
- [ ] Anonymous user cohorts
- [ ] A/B testing support
- [ ] Feature flag integration
- [ ] Custom metric definitions
- [ ] Multi-project dashboards

## ๐Ÿ“Š Comparison with Existing Solutions

| Feature | telemetry-kit | OpenTelemetry | tracing | sentry-rust |
|---------|--------------|---------------|---------|-------------|
| **Setup Complexity** | โญ Low (3 lines) | โš ๏ธ High (50+ lines) | โš ๏ธ Medium | โญ Low |
| **Privacy Built-in** | โœ… Yes | โŒ No | โŒ No | โš ๏ธ Partial |
| **CLI Optimized** | โœ… Yes | โŒ No | โŒ No | โš ๏ธ Partial |
| **Auto-instrumentation** | โœ… Yes | โŒ No | โŒ No | โš ๏ธ Errors only |
| **Self-hostable** | โœ… Included | โš ๏ธ Complex | N/A | โŒ Commercial |
| **Smart Suggestions** | โœ… Yes | โŒ No | โŒ No | โŒ No |
| **Offline Support** | โœ… Yes | โŒ No | N/A | โš ๏ธ Limited |
| **GDPR Compliant** | โœ… Built-in | โš ๏ธ Manual | โš ๏ธ Manual | โš ๏ธ Manual |

## ๐Ÿš€ Quick Start

### Installation

```toml
[dependencies]
telemetry-kit = "0.0.1"
```

### Basic Usage

```rust
use telemetry_kit::prelude::*;

#[tokio::main]
async fn main() -> Result<()> {
    // Initialize with defaults
    let _guard = telemetry_kit::init()
        .service_name("my-app")
        .init()?;
    
    // Your application code
    do_work().await?;
    
    Ok(())
}

#[instrument]
async fn do_work() -> Result<()> {
    // Automatically tracked!
    Ok(())
}
```

### CLI Application

```rust
use clap::Parser;
use telemetry_kit::cli::*;

#[derive(Parser)]
#[telemetry_kit::track_commands]  // Auto-track all commands!
struct Cli {
    #[command(subcommand)]
    command: Commands,
}

#[tokio::main]
async fn main() -> Result<()> {
    let cli = Cli::parse();
    
    telemetry_kit::init()
        .for_cli()                // CLI-specific optimizations
        .consent_on_first_run()   // Ask user permission
        .init()?;
    
    match cli.command {
        Commands::Build => build().await?,
        Commands::Deploy => deploy().await?,
    }
    
    Ok(())
}
```

## ๐Ÿ—๏ธ Architecture

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      Your Application                        โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”‚
โ”‚  โ”‚   Macros     โ”‚  โ”‚  Middleware  โ”‚  โ”‚   Manual     โ”‚      โ”‚
โ”‚  โ”‚ #[instrument]โ”‚  โ”‚   Tracking   โ”‚  โ”‚   Tracking   โ”‚      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ”‚
โ”‚         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                   โ”‚  telemetry-kit Core โ”‚
                   โ”‚                     โ”‚
                   โ”‚ โ€ข Privacy filters   โ”‚
                   โ”‚ โ€ข Anonymization     โ”‚
                   โ”‚ โ€ข Batching          โ”‚
                   โ”‚ โ€ข Sampling          โ”‚
                   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚                     โ”‚                     โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ OpenTelemetry  โ”‚  โ”‚  Simple Server   โ”‚  โ”‚   Custom        โ”‚
โ”‚   (OTLP)       โ”‚  โ”‚  (Self-hosted)   โ”‚  โ”‚   Backends      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

## ๐Ÿ”’ Privacy & Compliance

telemetry-kit is **privacy-first by design**:

- **Anonymous by default**: No PII collected unless explicitly enabled
- **User consent**: Built-in consent flow for CLI applications
- **Data sanitization**: Automatic scrubbing of sensitive data
- **GDPR compliant**: Right to erasure, data portability, consent management
- **Transparent**: Users can see exactly what data is collected
- **Opt-out friendly**: Easy to disable, respects DO_NOT_TRACK

### Privacy Features

**Interactive Consent Prompts (NEW!):**

```rust
use telemetry_kit::prelude::*;

#[tokio::main]
async fn main() -> Result<()> {
    // Show interactive consent dialog on first run
    let telemetry = TelemetryKit::builder()
        .service_name("my-app")?
        .service_version("1.0.0")
        .prompt_for_consent()?  // Full prompt with privacy details
        .build()?;

    // Or use minimal one-liner prompt
    let telemetry = TelemetryKit::builder()
        .service_name("my-app")?
        .prompt_minimal()?      // Shorter prompt
        .build()?;

    Ok(())
}
```

**Privacy Configuration:**

```rust
use telemetry_kit::prelude::*;
use telemetry_kit::privacy::PrivacyConfig;

// Strict privacy mode (GDPR-compliant)
let telemetry = TelemetryKit::builder()
    .service_name("my-app")?
    .strict_privacy()  // Requires consent, sanitizes data, 30-day retention
    .build()?;

// Or configure individually
let telemetry = TelemetryKit::builder()
    .service_name("my-app")?
    .consent_required(true)
    .sanitize_paths(true)
    .sanitize_emails(true)
    .data_retention(90)  // Days
    .build()?;
```

**Manage Consent via CLI:**

```bash
telemetry-kit consent grant    # Enable telemetry
telemetry-kit consent deny     # Disable telemetry
telemetry-kit consent status   # Check current status
```

See [examples/interactive_consent.rs](examples/interactive_consent.rs) and [examples/privacy.rs](examples/privacy.rs) for complete examples.

## ๐Ÿค Contributing

We welcome contributions! This is a **new project** and we're building it in the open.

### How to Contribute

1. Check out our [Roadmap]#-roadmap for planned features
2. Look at [GitHub Issues]https://github.com/ibrahimcesar/telemetry-kit/issues for tasks
3. Read [CONTRIBUTING.md]CONTRIBUTING.md for guidelines
4. Join discussions in [GitHub Discussions]https://github.com/ibrahimcesar/telemetry-kit/discussions

### Areas We Need Help

- ๐ŸŽจ **Design**: API design, ergonomics, developer experience
- ๐Ÿ“ **Documentation**: Examples, tutorials, guides
- ๐Ÿ”ง **Implementation**: Core features, integrations, tools
- ๐Ÿงช **Testing**: Unit tests, integration tests, real-world usage
- ๐ŸŒ **Community**: Blog posts, talks, spreading the word

## ๐Ÿ“š Documentation

### User Documentation
- [Quick Start Guide]docs/quick-start.md *(coming soon)*
- [API Reference]https://docs.telemetry-kit.dev/api
- [Privacy Guide]docs/privacy.md *(coming soon)*
- [CLI Best Practices]docs/cli-best-practices.md *(coming soon)*
- [Self-Hosting Guide]docs/self-hosting.md *(coming soon)*

### Project Documentation
- [Roadmap]ROADMAP.md - Feature roadmap and release plan
- [Security Policy]SECURITY.md - Vulnerability disclosure and security practices
- [SLSA Compliance]SLSA.md - Supply chain security documentation
- [Contributing Guide]CONTRIBUTING.md - How to contribute to the project
- [Project Docs]project-docs/README.md - Internal development documentation

## ๐Ÿ’ก Inspiration

This project is inspired by:
- The simplicity of [sentry-rust]https://github.com/getsentry/sentry-rust
- The power of [OpenTelemetry]https://opentelemetry.io/
- The ergonomics of [tracing]https://github.com/tokio-rs/tracing
- The privacy-focus of [Plausible Analytics]https://plausible.io/
- The developer experience of [Next.js Analytics]https://nextjs.org/analytics

## ๐Ÿ“„ License

This project is dual-licensed under your choice of:

- **Apache License, Version 2.0** ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- **MIT License** ([LICENSE-MIT]LICENSE-MIT or http://opensource.org/licenses/MIT)

You may choose either license at your option.

### Why Dual License?

We follow the Rust community standard of dual licensing to give you flexibility:

- **Choose MIT** if you prefer simplicity and maximum compatibility (including GPL2)
- **Choose Apache 2.0** if you want explicit patent protection and contributor agreements

Both licenses are permissive and allow commercial use, modification, distribution, and private use.

### Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

## ๐Ÿ™ Acknowledgments

Built with โค๏ธ by [Ibrahim Cesar](https://github.com/ibrahimcesar) and [contributors](https://github.com/ibrahimcesar/telemetry-kit/graphs/contributors).

Special thanks to:
- The [OpenTelemetry]https://opentelemetry.io/ project
- The [Rust tracing ecosystem]https://tokio.rs/tokio/topics/tracing
- Everyone who provided feedback and ideas

### GNU Terry Pratchett

This project includes the `X-Clacks-Overhead: GNU Terry Pratchett` header in all HTTP requests to keep the memory of Sir Terry Pratchett alive in the overhead of the internet. Learn more at [gnuterrypratchett.com](http://www.gnuterrypratchett.com/).

> "A man is not dead while his name is still spoken." - Going Postal, Terry Pratchett

---

**Status**: ๐Ÿšง **Early Development** - API is unstable and will change

**Current Version**: 0.0.1 - Placeholder release for crate reservation

**First Usable Release**: v0.1.0 (Target: Q1 2025)

[โญ Star us on GitHub]https://github.com/ibrahimcesar/telemetry-kit | [๐Ÿ“– Read the Docs]https://docs.telemetry-kit.dev | [๐Ÿ’ฌ Discussions]https://github.com/ibrahimcesar/telemetry-kit/discussions