pdfx-0.1.3 has been yanked.
pdfx
🛠️ A lightning-fast terminal-native PDF indexing and search toolkit
✨ Features
- 🚀 Lightning Fast Indexing: Two-phase scanning with real-time progress tracking - no more waiting for searches
- 🎯 Smart Database: SQLite-powered indexing with metadata extraction (path, size, modified date)
- 📊 Zero Duplicates: Intelligent
INSERT OR REPLACEprevents duplicate entries during re-indexing - 🛡️ System-Aware: Gracefully skips protected directories (Photos, Mail, etc.) and continues scanning
- 🧹 Complete Cleanup:
pdfx cleanupremoves all traces - perfect for uninstalling - 💻 Cross-Platform: Native support for Linux, macOS, and Windows with proper data directories
- 🎨 Beautiful Progress: Custom Braille character progress bars (
⣿⣷⣯⣟⡿⢿⠿⠟⠛⠋) with ETA and speed - ⚡ Instant Commands: Once indexed, all operations are database-fast (no filesystem scanning)
📦 Installation
Method 1: Install from GitHub (Recommended)
Make sure you have Rust installed, then run:
Method 2: Build from Source
# Clone the repository
# Build and install
Method 3: Download Binary (Coming Soon)
Pre-built binaries for major platforms will be available in the Releases section.
🚀 Usage
Basic Commands
# Initialize PDF index (one-time setup)
# Search indexed PDFs
# List indexed PDFs
# Show recent PDFs
# Clean up
Workflow
# 1. First time setup - index your PDFs
# ⠋ Counting files... 10847
# 🔍 Scanning for PDFs... [00:00:03] [⣿⣿⣿⣿⣿⣷⣯⣟⡿⢿⠿⠟⠛⠋ ] 1247/2500 files | 400/s | ETA: 00:03
# ✅ Scan complete! 170 PDFs found | 2500 files processed | 25 directories skipped
# Indexed 170 PDFs in /Users/user/Library/Application Support/pdfx/db.sqlite
# 2. Search your indexed PDFs instantly
# 3. List recent PDFs
# 4. When you're done (optional cleanup)
Sample Output
⠋ Counting files... 10847
🔍 Scanning for PDFs... [00:00:03] [⣿⣿⣿⣿⣿⣷⣯⣟⡿⢿⠿⠟⠛⠋ ] 1247/2500 files | 400/s | ETA: 00:03
✅ Scan complete! 170 PDFs found | 2500 files processed | 25 directories skipped
Indexed 170 PDFs in /Users/user/Library/Application Support/pdfx/db.sqlite
🗄️ Database & Storage
Where Your Data Lives
# macOS
# Linux
# Windows
Database Schema
Your PDFs are stored with:
- Path & Filename - Full file location and name
- Size & Modified Date - File metadata for change detection
- Indexed Timestamp - When the PDF was added to database
- Unique Path Constraint - Prevents duplicate entries
Privacy & Security
- Local Storage Only - No cloud, no tracking, no data sharing
- SQLite Database - Industry-standard, portable format
- Complete Cleanup -
pdfx cleanupremoves all traces
🛠️ Requirements
- Rust: 1.70 or later
- Operating System: Linux, macOS, or Windows
- Terminal: Any modern terminal with Unicode support
🤝 Contributing
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Setup
🔧 Troubleshooting
Common Issues
Q: "Permission denied" errors during scanning
# This is normal on macOS/Linux - system directories are protected
# pdfx will skip these and continue scanning accessible directories
Q: Database seems corrupted or giving errors
Q: Progress bar not showing or looks broken
# Ensure your terminal supports Unicode/UTF-8
# Try a modern terminal like: iTerm2, Terminal.app, or Windows Terminal
Q: Where is my data stored?
# View database location after running pdfx init
# Path is shown in success message
# Use `pdfx cleanup` to remove all data
🐛 Issues & Bug Reports
Found a bug? Have a feature request? Please check the Issues page first, then feel free to open a new issue with:
- System information (OS, Rust version)
- Steps to reproduce the issue
- Expected vs actual behavior
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Built with Rust 🦀
- Database powered by rusqlite for fast SQLite operations
- CLI interface built with clap for beautiful argument parsing
- Progress bars powered by indicatif with custom Braille characters
- Directory traversal using walkdir for efficient file scanning
- Date/time handling with chrono
🗺️ Roadmap
✅ Completed (v0.1.0)
- PDF Indexing - SQLite-based PDF database with metadata
- Beautiful Progress Bars - Braille character progress indicators
- Duplicate Prevention - Smart re-indexing without duplicates
- Clean Uninstall - Complete data cleanup with
pdfx cleanup - Cross-Platform Support - Works on Linux, macOS, and Windows
🚧 In Progress (v0.2.0)
- Smart Search - Full-text search inside indexed PDFs
- List Command - Display indexed PDFs with filtering
- Recent Command - Show recently modified PDFs
🔮 Future (v0.3.0+)
- Interactive Dashboard - Terminal UI for PDF analytics
- Duplicate Detection - Find duplicate PDFs by content hash
- Export Options - JSON/CSV output formats
- AI Integration - PDF summarization and analysis
- File Watching - Auto-update index when PDFs change