We love your PDFs… but it's fake.
A parody PDF tool with personality, removing limits and adding drama to your file management experience.
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run build
# Start production server
npm start- Merge PDFs — Combine multiple PDF files into one
- Split PDFs — Extract pages from a PDF
- Compress PDFs — Reduce file size without quality loss
- Image to PDF — Convert images (JPG, PNG, GIF, WEBP, BMP, TIFF) to PDF
- PDF to Word — Convert PDF to DOCX
- PDF to Excel — Convert PDF to XLSX
- PDF to PowerPoint — Convert PDF to PPTX
- 🌐 Bilingual — Spanish/English toggle with localStorage persistence
- 🎆 Binary Easter Egg — Animated celebration with binary messages on completion
- 👤 Developer Signature — "Charle-X" floating signature with pixel heart
- ⚡ Background Processing — All pages process in background, no UI blocking
- 📊 Process History — Persists across page refreshes via localStorage
"We are NOT just a tool. We are an experience."
Fake Love embraces a toxic-but-funny relationship with your files:
- No limits
- Fast interactions
- Humor first, perfection second
Every feature includes:
- Sarcastic text messages
- Unexpected behavior
- Personality
| Technology | Purpose |
|---|---|
| Next.js 14 | App Router framework |
| TypeScript | Type safety |
| SCSS | Modular component styles |
| pdf-lib | PDF manipulation (merge, split, compress) |
| pdfjs-dist | PDF rendering |
| mammoth | DOCX conversion |
| xlsx | Excel file handling |
| libreoffice-convert | Office document conversion |
| Lucide React | Icon library |
FakeLove-PDF-Tools/
├── app/ # Next.js App Router pages
│ ├── api/ # API routes
│ ├── compress/ # Compress PDF page
│ ├── imagetopdf/ # Image to PDF page
│ ├── merge/ # Merge PDFs page
│ ├── more-tools/ # Additional tools (PDF to Office)
│ ├── split/ # Split PDF page
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/ # Reusable React components (33 files)
├── lib/ # Utilities and context
│ ├── language.tsx # i18n translations (ES/EN)
│ └── processContext.tsx # Global process state
├── documentation/ # Full documentation
├── public/ # Static assets
├── styles/ # Global styles
├── scripts/ # Python helper scripts
├── tests/ # Test files
├── package.json
└── .gitignore
Create a .env.local file in the root directory:
# Optional: Set the base URL for the application
NEXT_PUBLIC_APP_URL=http://localhost:3000All documentation is in the documentation/ folder:
- Getting Started — Quick start guide
- Installation — Detailed installation
- Features — All features explained
- Architecture — System design
- API Reference — API endpoints
- Components — Component library
- Deployment — Deployment guide
- Troubleshooting — Common issues
- Changelog — Version history
| Name | Hex | Usage |
|---|---|---|
| Primary | #dc2626 |
CTAs, highlights |
| Background | #0a0a0f |
Main background |
| Surface | #141419 |
Cards, panels |
| Border | #2a2a35 |
Dividers, borders |
| Text Primary | #f5f5f5 |
Main text |
| Text Secondary | #9ca3af |
Muted text |
- Headings: System font stack
- Body: System font stack
- Monospace: Monospace for code/binary elements
The app includes sarcastic messages throughout:
Loading:
- "Uploading your emotional baggage..."
- "Processing… unlike your ex"
- "Converting pixels into PDF love"
Success:
- "Done. That was suspiciously easy."
- "Your PDF is ready. Unlike your plans for tonight."
Error:
- "Something broke. Probably your fault."
- "We tried. Emotionally, not technically."
Charle-X — Floating signature with pixel heart animation.
Binary message: 01000011 01001000 01000001 01010010 01001100 01000101 00100000 01010010 01001111 0001010
MIT License — Use it, abuse it, break it, love it.
Made with 💔 and sarcasm.