Pdfmaster is a web-based tool for converting between PDF and Word documents.
Built with Flask, Docker, and Caddy for production-ready deployment.
- Convert Word → PDF
- Convert PDF → Word
- Extract text from PDFs
- Merge PDFs
- All endpoints CORS-enabled for frontend usage
- Backend: Flask, Flask-CORS, PyPDF2, fpdf, python-docx, pdf2docx
- Frontend: React (served via Docker)
- Proxy/SSL: Caddy (automatic HTTPS)
- Containerization: Docker & Docker Compose
Pdfmaster/ │── backend/ # Flask API │ ├── app.py # Main Flask backend app │ ├── requirements.txt # Python dependencies │ ├── Dockerfile # Backend Docker build │ └── pycache/ # (auto-generated by Python) │ │── frontend/ # React frontend │ ├── public/ │ │ ├── index.html │ │ ├── favicon.ico │ │ └── logo.png │ │ │ ├── src/ │ │ ├── App.js │ │ ├── Navbar.js │ │ ├── index.js │ │ ├── components/ │ │ │ ├── FileUpload.js │ │ │ ├── PdfToWord.js │ │ │ ├── WordToPdf.js │ │ │ ├── ExtractText.js │ │ │ └── MergePdf.js │ │ └── styles/ │ │ └── App.css │ │ │ ├── package.json │ ├── package-lock.json │ └── Dockerfile # Frontend Docker build │ │── Caddyfile # Reverse proxy + SSL │── docker-compose.yml # Orchestration file │── README.md # Project documentation
git clone https://github.com/jasgida/Pdfmaster.git
cd Pdfmaster
2. Start Services with Docker Compose
docker-compose up --build -d
This will start:
🖥️ Frontend (React) → http://localhost:3000
⚙️ Backend (Flask API) → http://localhost:5000
🌍 Caddy (Reverse Proxy + SSL) → http://localhost
and https://localhost
3. Access Application
Open your browser at 👉 https://localhost
All API calls will be proxied automatically via Caddy
🐳 Docker Services
Frontend → React app served at port 3000 (proxied by Caddy)
Backend → Flask app running at port 5000
Caddy → Reverse proxy, HTTPS, automatic TLS certificates
MongoDB (optional, if needed later for user data)
🛠️ Development Notes
Flask backend runs in production mode inside Docker.
Use docker logs <container_name> to debug issues.
Volumes are mounted for persistent storage.
📜 License
This project is licensed under the MIT License – feel free to use, modify, and share.