A professional web-based PDF conversion and manipulation tool built with React, TypeScript, and Node.js.
- Merge PDF: Combine multiple PDF files into one document
- Split PDF: Split PDF into multiple files by pages
- Compress PDF: Reduce PDF file size while maintaining quality
- PDF to Image: Convert PDF pages to high-quality images
- Image to PDF: Convert images to PDF documents
- Office to PDF: Convert Word, Excel, PowerPoint to PDF
- Extract Pages: Extract specific pages from PDF
- Rearrange Pages: Reorder and organize PDF pages
- React 18 with TypeScript
- Vite for fast development
- Tailwind CSS for styling
- Framer Motion for animations
- React Router for navigation
- React Dropzone for file uploads
- Node.js with Express
- Multer for file uploads
- Pino for logging
- Helmet for security
- CORS enabled
- Rate limiting
- File validation
- Node.js 18.0.0 or higher
- npm or yarn package manager
-
Clone the repository
git clone <repository-url> cd PDF_converter
-
Install Backend Dependencies
cd backend npm install cd ..
-
Install Frontend Dependencies
cd frontend npm install cd ..
Windows:
# Double-click start-system.bat
# Or run in PowerShell:
.\start-system.ps1Linux/Mac:
chmod +x start.sh
./start.sh-
Start Backend Server
cd backend npm startBackend will be available at: http://localhost:5000
-
Start Frontend (in a new terminal)
cd frontend npm run devFrontend will be available at: http://localhost:3000
GET /api/health- Health checkPOST /api/upload- File uploadPOST /api/jobs- Create processing jobGET /api/jobs/:jobId- Get job statusGET /api/download/:fileId- Download processed file
- Maximum file size: 50MB
- Maximum files per upload: 10
- Supported formats: PDF, Images (JPEG, PNG, GIF, WebP), Office documents (DOC, DOCX, XLS, XLSX, PPT, PPTX)
cd backend
npm run dev # Uses nodemon for auto-restartcd frontend
npm run dev # Vite dev server with hot reloadcd frontend
npm run buildPDF_converter/
├── backend/ # Node.js backend server
│ ├── server.js # Main server file
│ ├── package.json # Backend dependencies
│ └── uploads/ # File upload directory
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ ├── App.tsx # Main app component
│ │ └── main.tsx # App entry point
│ ├── package.json # Frontend dependencies
│ └── tailwind.config.js # Tailwind CSS configuration
├── start-system.bat # Windows batch file to start system
├── start-system.ps1 # PowerShell script to start system
└── README.md # This file
- Helmet.js for security headers
- CORS configuration
- Rate limiting (100 requests per 15 minutes)
- File type validation
- File size limits
- Automatic file cleanup (30 minutes)
-
Port already in use
- Change ports in
backend/config.envandfrontend/vite.config.ts - Kill processes using the ports
- Change ports in
-
File upload fails
- Check file size (max 50MB)
- Verify file format is supported
- Ensure uploads directory exists
-
CORS errors
- Verify FRONTEND_URL in backend config
- Check that both servers are running
-
Dependencies not found
- Run
npm installin both backend and frontend directories - Clear npm cache:
npm cache clean --force
- Run
Backend logs are displayed in the console with colorized output using Pino Pretty.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.
For support and questions, please open an issue in the repository.