{"id":49907859,"url":"https://github.com/ez-biz/easy-pdf","last_synced_at":"2026-05-16T11:12:44.368Z","repository":{"id":333808578,"uuid":"1137249190","full_name":"ez-biz/easy-pdf","owner":"ez-biz","description":"Free online PDF tools — merge, split, compress, convert, OCR, and more. 100% client-side processing, your files never leave your device.","archived":false,"fork":false,"pushed_at":"2026-04-01T17:37:17.000Z","size":2993,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-02T03:37:53.674Z","etag":null,"topics":["js","nodejs","pdf","pdf-editor","pdf-processing"],"latest_commit_sha":null,"homepage":"https://easypdf.biz","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ez-biz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-19T05:52:11.000Z","updated_at":"2026-04-01T17:37:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ez-biz/easy-pdf","commit_stats":null,"previous_names":["ez-biz/easy-pdf"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ez-biz/easy-pdf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ez-biz%2Feasy-pdf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ez-biz%2Feasy-pdf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ez-biz%2Feasy-pdf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ez-biz%2Feasy-pdf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ez-biz","download_url":"https://codeload.github.com/ez-biz/easy-pdf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ez-biz%2Feasy-pdf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33100383,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["js","nodejs","pdf","pdf-editor","pdf-processing"],"created_at":"2026-05-16T11:12:43.600Z","updated_at":"2026-05-16T11:12:44.356Z","avatar_url":"https://github.com/ez-biz.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EasyPDF - Free Online PDF Tools\n\nA modern, privacy-focused PDF manipulation suite built with Next.js 15. All processing happens client-side in your browser - your files never leave your device.\n\n[![Next.js](https://img.shields.io/badge/Next.js-15.5.9-black)](https://nextjs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue)](https://www.typescriptlang.org/)\n[![Zustand](https://img.shields.io/badge/Zustand-5.0-purple)](https://zustand-demo.pmnd.rs/)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n\n## ✨ Features\n\n### 17 Complete PDF Tools\n\n| Category | Tools | Status |\n|----------|-------|--------|\n| **Organize** | Merge PDFs, Split PDF, Rotate Pages | ✅ Live |\n| **Convert** | PDF to Image, Image to PDF | ✅ Live |\n| **Optimize** | Compress PDF | ✅ Live |\n| **Edit** | Add Watermark, Add Page Numbers, Remove Pages, Extract Pages, Edit Metadata, Add Text, Add Image, **Sign PDF** | ✅ Live |\n| **Security** | Password Protect PDF, Unlock PDF | ✅ Live |\n\n### Core Features\n\n- 🔒 **100% Client-Side Processing** - Files never leave your browser\n- 🎯 **State Management** - Zustand for settings, activity tracking \u0026 preferences\n- 🎉 **Toast Notifications** - Real-time feedback with animated notifications\n- 🌙 **Dark Mode** - Persistent theme with automatic detection\n- 🚀 **Performance Optimized** - Next.js Image optimization \u0026 lazy loading\n- 📱 **Fully Responsive** - Works seamlessly on all devices\n- ♿ **Accessible** - WCAG compliant with keyboard navigation\n- 💾 **LocalStorage Persistence** - Settings \u0026 recent activity saved\n- 🎨 **Modern UI/UX** - Beautiful interface with Framer Motion animations\n- 📄 **Legal Pages** - Privacy Policy, Terms of Service, Contact\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Node.js 18.x or higher\n- npm, yarn, or pnpm\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/ez-biz/easy-pdf.git\ncd easy-pdf\n\n# Install dependencies\nnpm install\n\n# Run development server\nnpm run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser.\n\n### Build for Production\n\n```bash\n# Create optimized production build\nnpm run build\n\n# Start production server\nnpm start\n\n# Or deploy to Vercel (recommended)\nvercel deploy\n```\n\n## 🏗️ Tech Stack\n\n### Core\n- **Framework:** Next.js 15.5.9 (App Router)\n- **Language:** TypeScript 5+\n- **Styling:** Tailwind CSS 3.4\n- **State Management:** Zustand 5.0 (with persistence)\n\n### Libraries\n- **PDF Processing:** pdf-lib (client-side manipulation)\n- **Animations:** Framer Motion 11+\n- **Icons:** Lucide React\n- **File Handling:** react-dropzone\n\n### Features\n- **Toast System:** Custom context with auto-dismiss\n- **Dark Mode:** Persistent theme switching\n- **Image Optimization:** Next.js Image component\n- **Type Safety:** Strict TypeScript configuration\n\n## 📁 Project Structure\n\n```\neasy-pdf/\n├── src/\n│   ├── app/\n│   │   ├── (tools)/              # Tool pages (merge, split, etc.)\n│   │   ├── docs/                 # Documentation site (MDX)\n│   │   ├── layout.tsx            # Root layout with providers\n│   │   └── page.tsx              # Homepage\n│   ├── components/\n│   │   ├── layout/               # Header, Footer, ToolLayout\n│   │   ├── tools/                # FileUploader, DownloadButton\n│   │   └── ui/                   # Button, ProgressBar, Toast\n│   ├── contexts/\n│   │   └── ToastContext.tsx      # Toast notification provider\n│   ├── store/\n│   │   └── useAppStore.ts        # Zustand global state\n│   ├── lib/\n│   │   ├── pdf/                  # PDF utilities (merge, split, etc.)\n│   │   ├── constants.ts          # App constants \u0026 tool definitions\n│   │   └── utils.ts              # Helper functions\n│   └── types/\n│       └── tools.ts              # TypeScript type definitions\n├── public/                       # Static assets\n├── .gitignore                    # Git ignore patterns\n├── LICENSE                       # MIT License\n└── README.md                     # This file\n```\n\n## 🎯 Key Features Explained\n\n### 1. Client-Side Processing\nAll PDF operations happen in your browser using `pdf-lib`:\n- ✅ **Zero Server Costs** - No backend required\n- ✅ **Complete Privacy** - Files never uploaded\n- ✅ **Offline Capable** - Works after initial load\n- ✅ **Fast Processing** - No network latency\n- ✅ **Unlimited Usage** - No file size restrictions\n\n### 2. State Management (Zustand)\nLightweight, powerful state management:\n```typescript\nconst { settings, toggleDarkMode, addActivity } = useAppStore();\n```\n- **Settings:** Dark mode, default page sizes, compression levels\n- **Activity:** Track last 10 PDF operations\n- **Stats:** Total files processed\n- **Persistent:** Auto-saved to localStorage\n\n### 3. Toast Notifications\nElegant feedback system with 4 types:\n- ✅ **Success** - Operation completed\n- ❌ **Error** - Operation failed\n- ⚠️ **Warning** - User attention needed\n- ℹ️ **Info** - Process updates\n\n### 4. PDF Tools\n\n#### Organize Tools\n- **Merge PDFs** - Combine multiple PDFs with drag-and-drop reordering\n- **Split PDF** - Extract pages or split by page count\n- **Rotate Pages** - Rotate individual or all pages (90°, 180°, 270°)\n\n#### Convert Tools\n- **PDF to Image** - Export pages as JPG/PNG with quality settings\n- **Image to PDF** - Convert multiple images with page size options\n\n#### Optimize\n- **Compress PDF** - Reduce file size while maintaining quality\n\n#### Edit Tools\n- **Add Watermark** - Text or image watermarks with positioning\n- **Add Page Numbers** - Customizable page numbering\n- **Remove Pages** - Select and delete specific pages\n- **Extract Pages** - Create new PDF from selected pages\n- **Edit Metadata** - View and modify PDF title, author, subject, and keywords\n- **Add Text** - Insert text boxes with custom fonts, colors, and positioning\n- **Add Image** - Overlay images on PDF pages with resizing and rotation\n\n#### Security\n- **Protect PDF** - Add password protection (note: client-side limitation)\n- **Unlock PDF** - Remove password from protected PDFs\n\n## 🔧 Available Scripts\n\n| Command | Description |\n|---------|-------------|\n| `npm run dev` | Start development server on port 3000 |\n| `npm run build` | Build optimized production bundle |\n| `npm start` | Run production server |\n| `npm run lint` | Run ESLint with Next.js config |\n\n## 🔐 Security \u0026 Privacy\n\n### What We Track\n- ✅ **Anonymous Analytics** (optional) - Page views only\n- ✅ **LocalStorage** - User preferences \u0026 settings\n- ❌ **No File Upload** - Files stay on your device\n- ❌ **No User Data** - No accounts or personal info\n- ❌ **No Cookies** - Except essential preferences\n\n### Data You Control\nAll data stored locally via `localStorage`:\n- Theme preferences (dark/light mode)\n- Default tool settings\n- Recent activity (tool names \u0026 timestamps only)\n- Usage statistics\n\n## 🚢 Deployment\n\n### Vercel (Recommended)\n```bash\n# Install Vercel CLI\nnpm i -g vercel\n\n# Deploy\nvercel\n```\n\n### Other Platforms\nWorks on any platform supporting Next.js:\n- Netlify\n- AWS Amplify\n- Cloudflare Pages\n- Docker\n\n## 🤝 Contributing\n\nContributions welcome! Please follow these steps:\n\n1. Fork the repository\n2. Create feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit changes (`git commit -m 'Add AmazingFeature'`)\n4. Push to branch (`git push origin feature/AmazingFeature`)\n5. Open Pull Request\n\n### Development Guidelines\n- Follow TypeScript strict mode\n- Use ESLint configuration provided\n- Write meaningful commit messages\n- Update documentation as needed\n\n## 📄 License\n\nThis project is licensed under the MIT License - see [LICENSE](LICENSE) for details.\n\n## 🙏 Acknowledgments\n\n### Core Libraries\n- [pdf-lib](https://pdf-lib.js.org/) - PDF manipulation\n- [Next.js](https://nextjs.org/) - React framework\n- [Zustand](https://zustand-demo.pmnd.rs/) - State management\n- [Tailwind CSS](https://tailwindcss.com/) - Styling\n- [Framer Motion](https://www.framer.com/motion/) - Animations\n- [Lucide](https://lucide.dev/) - Icons\n\n### Inspiration\n- Privacy-first design philosophy\n- Modern web application standards\n- User-centric PDF tools\n\n## 📊 Stats\n\n- **Bundle Size:** ~147 KB (gzipped)\n- **Lighthouse Score:** 95+ Performance\n- **TypeScript Coverage:** 100%\n- **Tools Available:** 12\n- **Supported Formats:** PDF, JPG, PNG, WEBP, GIF, BMP\n\n## 📞 Support\n\n- **Issues:** [GitHub Issues](https://github.com/ez-biz/easy-pdf/issues)\n- **Contact:** [Contact Page](/contact)\n- **Documentation:** See [`/docs`](/docs) for detailed architectural and feature documentation.\n\n---\n\n**Made with ❤️ by ez-biz** • **Privacy First** • **100% Open Source**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fez-biz%2Feasy-pdf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fez-biz%2Feasy-pdf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fez-biz%2Feasy-pdf/lists"}