A privacy-focused, frontend-only PDF manipulation tool built with React and Bun. Process your PDFs entirely in your browser - no data ever leaves your device.
π MVP COMPLETE! All 3 core features + Task Queue system are fully functional and ready to use!
Task Queue System
- Track all PDF processing tasks
- 5-character unique task IDs
- Download results multiple times
- 24-hour result persistence
- Visual status tracking
- Error debugging
- Task statistics dashboard
-
JPG to PDF - Convert images to PDF with customizable settings
- Multiple images support
- Drag & drop reordering
- Page size selection (A4, Letter, Legal)
- Orientation control (Portrait/Landscape)
- Adjustable margins
- Fit to page & aspect ratio options
-
Merge PDF - Combine multiple PDFs into one
- Upload multiple PDF files
- Drag & drop to reorder
- Select specific page ranges per file
- Visual page count display
- Automatic merge and download
-
Organize PDF - Manipulate PDF pages visually
- Upload single PDF
- Visual page thumbnails
- Drag & drop to reorder pages
- Rotate pages (left/right)
- Delete pages (with restore)
- Save organized PDF
- Split PDF - Extract pages or split into multiple files
- Compress PDF - Reduce file size
- PDF to JPG - Convert PDF pages to images
- Add Watermark - Text or image watermarks
- Password Protection - Encrypt/decrypt PDFs
- Batch Operations - Process multiple files at once
- 100% Client-Side Processing - All PDF operations happen in your browser
- No Data Upload - Your files never touch a server
- Offline Capable - Works without an internet connection
- No Tracking - No analytics or data collection
- Open Source - Full transparency in what we do
# Install dependencies (includes all PDF libraries)
bun install
# Setup PDF.js worker (required)
bun run setup:worker
# Start development server
bun dev
# Access at http://localhost:3333# Build and start
docker-compose up -d
# Access at http://localhost:3000bun run build
bun start# Development
make install # Install dependencies
make dev # Start dev server
make build # Production build
# Docker
make docker-build # Build Docker image
make docker-up # Start containers
make docker-down # Stop containers
make docker-logs # View logs
# Maintenance
make clean # Clean build artifacts
make clean-all # Clean everything- Frontend: React 19
- Runtime: Bun
- Styling: Tailwind CSS v4
- PDF Library: pdf-lib, pdfjs-dist
- Storage: IndexedDB + LocalStorage
- Container: Docker + Nginx
src/
βββ components/ # Reusable UI components
β βββ common/ # Shared components
β βββ pdf/ # PDF-specific components
βββ features/ # Feature modules
β βββ jpg-to-pdf/
β βββ merge-pdf/
β βββ organize-pdf/
βββ hooks/ # Custom React hooks
βββ utils/ # Helper functions
β βββ pdf/ # PDF utilities
β βββ storage/ # Storage helpers
βββ types/ # TypeScript types
The project includes:
- Multi-stage Dockerfile - Optimized production build
- Nginx configuration - Fast static file serving
- Docker Compose - Easy orchestration
- Development mode - Hot-reload in container
docker compose up -d pdf-toolsAccessible at http://localhost:3000
docker compose --profile dev up pdf-tools-devAccessible at http://localhost:3001
| Document | Description |
|---|---|
| docs/USER_GUIDE.md | π Complete guide to using all features (JPG to PDF, Merge PDF, Organize PDF, Task Queue) |
| docs/INSTALL.md | π Installation and setup instructions for local and Docker deployments |
| docs/TODO.md | β Project roadmap with completed MVP features and future plans |
| docs/ARCHITECTURE.md | ποΈ Technical architecture, design decisions, and system structure |
| docs/TROUBLESHOOTING.md | π§ Common issues, solutions, and debugging guide |
| CONTRIBUTING.md | π€ Contributing guidelines and development workflow |
| CHANGELOG.md | π Version history and recent updates |
See docs/TODO.md for the complete development roadmap.
- β Setup infrastructure
- β Core UI components
- β Docker configuration
- β Tailwind CSS integration
- β IndexedDB & LocalStorage
- β JPG to PDF converter
- β Merge PDF tool
- β Organize PDF tool
- β Task Queue system
- β All 3 PDF tools functional
- β Task queue with persistence
- β Drag & drop interfaces
- β Privacy-first architecture
- β Production-ready Docker setup
- Split, Compress, Watermark
- PDF to Image conversion
- Password protection
- Batch operations
Contributions are welcome! Please read the TODO.md for development guidelines and feature roadmap.
MIT License - feel free to use this project for personal or commercial purposes.
All processing happens client-side. No files are uploaded to any server. The application uses:
- IndexedDB for temporary file storage (auto-cleanup after 24h)
- LocalStorage for user preferences only
- Content Security Policy headers
- No external API calls
- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
- Opera 76+
Requires modern browser with support for:
- Web Workers
- IndexedDB
- File System Access API (optional)