A full-stack PDF workspace built with React, Vite, FastAPI, and local document-processing utilities.
This project is designed as a polished academic and portfolio-ready PDF platform inspired by modern PDF productivity platforms. It combines a visually refined homepage, a shared tool workspace, user authentication, multilingual UI support, and a broad set of PDF-focused modules.
The project currently includes:
- a React frontend with a redesigned editorial-style landing page
- an official
DocMatelogo asset set with editable SVG source and transparent PNG runtime usage - a FastAPI backend for authentication and PDF tool processing
- SQLite by default, with optional PostgreSQL support
- multiple PDF utilities including organization, conversion, editing, security, OCR, translation, and workflow chaining
- a responsive interface suitable for Final Year Project demos and portfolio presentation
The homepage was recently upgraded to match a more premium and presentation-ready visual direction.
- sticky navigation with the official
DocMatetransparent logo integrated directly into the header - single-line desktop navbar behavior with non-wrapping primary links and auth actions
- adaptive navbar spacing and search sizing to preserve balance as content grows
- integrated homepage tool search with
Ctrl/Cmd + K - serif-led hero section with floating accent tiles
- category filter pills that drive the real tool grid
- redesigned tool cards with clearer category grouping
- workflow, project polish, and trust sections that support the landing experience
- updated footer aligned with the new visual system
- background tone: warm cream interface
- display font:
Instrument Serif - body font:
Plus Jakarta Sans - brand assets:
frontend/src/assets/docmate_logo_svg.svgandfrontend/src/assets/docmate_logo.png - navigation surfaces: white, charcoal, and soft gray framing with the logo's coral accent reserved for branding
- category accent colors for organize, optimize, convert, edit, security, workflow, and intelligence flows
- responsive layout across desktop and mobile
- the navbar uses the transparent PNG from
frontend/src/assets, while the SVG remains the editable source - desktop navigation uses
whitespace-nowrapand tuned gap/font sizing to keep text on one line - homepage search remains available on large screens with a narrower adaptive slot
- mobile and tablet views keep the existing drawer pattern so branding changes do not introduce overflow
- Merge PDF
- Split PDF
- Organize PDF
- Scan to PDF
- Compress PDF
- Repair PDF
- OCR PDF
- PDF to Word
- PDF to PowerPoint
- PDF to Excel
- PDF to JPG
- PDF to PDF/A
- Word to PDF
- PowerPoint to PDF
- Excel to PDF
- JPG to PDF
- HTML to PDF
- Edit PDF
- Rotate PDF
- Watermark
- Crop PDF
- Page numbers
- Unlock PDF
- Protect PDF
- Sign PDF
- Redact PDF
- Compare PDF
- AI Summarizer
- Translate PDF
- Create a workflow
Some tools are intentionally lightweight or academic-project friendly rather than enterprise-level replacements.
Protect PDFuses strong encryption in the backend.Scan to PDFandOCR PDFgenerate searchable document output with OCR.Translate PDFcreates a translated report-style PDF rather than a full layout-preserving translation.AI Summarizeruses extractive summarization from document text with OCR fallback.Create a workflowallows chained processing and local preset reuse in the frontend.- Some Office and PDF conversions depend on local native utilities such as LibreOffice or Ghostscript.
- React
- Vite
- Tailwind CSS
- FastAPI
- SQLAlchemy
- Pydantic
pypdfPillowreportlabpython-docxpython-pptxopenpyxlrapidocr-onnxruntimedeep-translatorlangdetectcryptography
- SQLite by default
- PostgreSQL supported through
DATABASE_URL
.
├── backend
│ ├── app
│ │ ├── api
│ │ │ └── routes
│ │ ├── schemas
│ │ ├── services
│ │ ├── db.py
│ │ ├── main.py
│ │ └── models.py
│ ├── .venv
│ ├── app.db
│ └── requirements.txt
├── database
│ ├── backups
│ ├── migrations
│ ├── schema.sql
│ └── seeds
├── frontend
│ ├── public
│ ├── src
│ │ ├── components
│ │ │ ├── Navbar.jsx
│ │ │ ├── HeroSection.jsx
│ │ │ ├── ToolsSection.jsx
│ │ │ ├── PremiumSection.jsx
│ │ │ ├── ImageEditorSection.jsx
│ │ │ ├── TrustSection.jsx
│ │ │ └── Footer.jsx
│ │ ├── assets
│ │ │ ├── docmate_logo.png
│ │ │ └── docmate_logo_svg.svg
│ │ ├── lib
│ │ ├── pages
│ │ ├── services
│ │ ├── App.jsx
│ │ ├── index.css
│ │ └── main.jsx
│ ├── index.html
│ ├── package.json
│ └── vite.config.js
├── docker-compose.yml
└── README.md
- Node.js 18+
- Python 3.11+
- npm
- LibreOffice
- Ghostscript
- PostgreSQL
Some processors rely on native system tools. If a specific module fails, verify that the related dependency is installed and accessible from the terminal.
cd frontend
npm install
npm run devThe frontend usually runs at:
http://localhost:5173
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reloadThe backend usually runs at:
http://127.0.0.1:8000
By default, the backend uses:
sqlite:///./app.db
To use PostgreSQL instead, set:
export DATABASE_URL=postgresql+psycopg://USER:PASSWORD@HOST:PORT/DB_NAMEA PostgreSQL service is included in docker-compose.yml.
Start it with:
docker compose up -dSet these environment variables before using it:
export POSTGRES_DB=ilovepdf
export POSTGRES_USER=postgres
export POSTGRES_PASSWORD=postgres
export POSTGRES_PORT=5432- passwords are hashed before storage
- session tokens are stored server-side as hashes
- sessions expire automatically
- multiple active sessions are limited
- login and signup flows are available from the frontend
- maximum files per request:
5 - maximum file size per file:
25 MB - unsupported or invalid file types are rejected
- some routes require a single file, while others allow multiple
A typical user journey in the app is:
- Open the homepage.
- Use the navbar, search, or category pills to find a tool.
- Open the tool workspace page.
- Upload file(s).
- Configure tool-specific options.
- Run processing.
- Download the generated result.
Examples include:
/merge-pdf/split-pdf/compress-pdf/pdf-to-word/pdf-to-jpg/ocr-pdf/translate-pdf/ai-summarizer/create-workflow
cd frontend
npm run buildcd backend
./.venv/bin/python -m compileall appThe homepage redesign, official logo integration, and navbar spacing updates were verified with a successful production build.
GET /POST /api/auth/signupPOST /api/auth/loginGET /api/auth/mePOST /api/auth/logoutGET /api/toolsPOST /api/tools/{tool_slug}/process
- some advanced tools are project-grade implementations rather than enterprise-complete replacements
- translation output focuses on translated content more than original visual fidelity
- some conversions depend on local native tools being installed correctly
- there is no full background job queue or persisted processing history yet
- extend the new design language into pricing, auth, features, and tool workspace pages
- add richer previews for visual tools such as organize, crop, sign, and compare
- add server-side workflow persistence and file history
- improve advanced conversion fidelity and document comparison depth
- add automated frontend and backend tests for critical processing flows
This project currently does not define a separate license file.
