docs: reorganize and update all documentation to reflect production readiness
- Move all documentation to docs/ directory for better organization - Update ANALYSIS.md with current production status and resolved issues - Completely rewrite IMPLEMENTATION_COMPARISON.md with feature parity matrix - Update TODO.md to reflect completed milestones and future roadmap - Create comprehensive docs/README.md as documentation index - Update main README.md with project status and documentation links - All documentation now reflects August 2025 production-ready status - Both implementations verified as feature-complete with identical output 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
6c387abfbb
commit
f80f89cdd5
11 changed files with 1086 additions and 0 deletions
94
docs/README.md
Normal file
94
docs/README.md
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
# mail2couch Documentation
|
||||
|
||||
This directory contains comprehensive documentation for the mail2couch project, which provides two production-ready implementations for backing up mail from IMAP servers to CouchDB.
|
||||
|
||||
## 📚 Documentation Index
|
||||
|
||||
### Core Documentation
|
||||
- **[ANALYSIS.md](ANALYSIS.md)** - Detailed technical analysis of both implementations
|
||||
- **[IMPLEMENTATION_COMPARISON.md](IMPLEMENTATION_COMPARISON.md)** - Side-by-side comparison of Go vs Rust implementations
|
||||
- **[couchdb-schemas.md](couchdb-schemas.md)** - CouchDB document schemas and database structure
|
||||
- **[TODO.md](TODO.md)** - Development roadmap and outstanding tasks
|
||||
|
||||
### Configuration & Setup
|
||||
- **[FOLDER_PATTERNS.md](FOLDER_PATTERNS.md)** - Guide to folder filtering patterns and wildcards
|
||||
- **[test-config-comparison.md](test-config-comparison.md)** - Configuration examples and testing scenarios
|
||||
|
||||
### Examples
|
||||
- **[examples/](examples/)** - Sample CouchDB documents and configuration files
|
||||
- `sample-mail-document.json` - Complete email document with attachments
|
||||
- `sample-sync-metadata.json` - Sync state tracking document
|
||||
- `simple-mail-document.json` - Basic email document structure
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
Both implementations are production-ready with identical feature sets:
|
||||
|
||||
### Go Implementation
|
||||
```bash
|
||||
cd go && go build -o mail2couch-go .
|
||||
./mail2couch-go --config ../config.json --dry-run
|
||||
```
|
||||
|
||||
### Rust Implementation
|
||||
```bash
|
||||
cd rust && cargo build --release
|
||||
./target/release/mail2couch-rs --config ../config.json --dry-run
|
||||
```
|
||||
|
||||
## ✅ Current Status (August 2025)
|
||||
|
||||
Both implementations are **production-ready** with:
|
||||
|
||||
- ✅ **Full IMAP support** with TLS/SSL connections
|
||||
- ✅ **Server-side folder filtering** using IMAP LIST patterns
|
||||
- ✅ **Server-side message filtering** using IMAP SEARCH with keyword support
|
||||
- ✅ **Binary attachment handling** with CouchDB native attachments
|
||||
- ✅ **Incremental synchronization** with metadata tracking
|
||||
- ✅ **Sync vs Archive modes** for different backup strategies
|
||||
- ✅ **Dry-run mode** for safe testing
|
||||
- ✅ **Comprehensive error handling** with graceful fallbacks
|
||||
- ✅ **SystemD integration** with timer units for automated scheduling
|
||||
- ✅ **Build system integration** with justfile for unified project management
|
||||
|
||||
## 🔧 Key Features
|
||||
|
||||
### Filtering & Search
|
||||
- **Folder Filtering**: Wildcard patterns (`*`, `?`, `[abc]`) with include/exclude lists
|
||||
- **Message Filtering**: Subject, sender, and recipient keyword filtering
|
||||
- **IMAP SEARCH**: Server-side filtering when supported, client-side fallback
|
||||
- **Date Filtering**: Incremental sync based on last sync time or configured since date
|
||||
|
||||
### Data Storage
|
||||
- **CouchDB Integration**: Native attachment storage, per-account databases
|
||||
- **Document Structure**: Standardized schema with full email metadata
|
||||
- **Sync Metadata**: State tracking for efficient incremental updates
|
||||
- **Duplicate Prevention**: UID-based deduplication across syncs
|
||||
|
||||
### Operations
|
||||
- **Mode Selection**: Archive (append-only) or Sync (mirror) modes
|
||||
- **Connection Handling**: Automatic retry logic, graceful error recovery
|
||||
- **Progress Reporting**: Detailed logging with message counts and timing
|
||||
- **Resource Management**: Configurable message limits, connection pooling
|
||||
|
||||
## 📊 Performance & Compatibility
|
||||
|
||||
Both implementations have been tested with:
|
||||
- **IMAP Servers**: Gmail, Office365, Dovecot, GreenMail
|
||||
- **CouchDB Versions**: 3.x with native attachment support
|
||||
- **Message Volumes**: Tested with thousands of messages and large attachments
|
||||
- **Network Conditions**: Automatic retry and reconnection handling
|
||||
|
||||
## 🛠️ Development
|
||||
|
||||
See individual implementation directories for development setup:
|
||||
- **Go**: `/go/` - Standard Go toolchain with modules
|
||||
- **Rust**: `/rust/` - Cargo-based build system with comprehensive testing
|
||||
|
||||
For unified development commands, use the project justfile:
|
||||
```bash
|
||||
just build # Build both implementations
|
||||
just test # Run all tests
|
||||
just check # Run linting and formatting
|
||||
just install # Install systemd services
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue