https://github.com/tejastn10/papyrus
๐ Papyrus โ Securely add or remove passwords from PDF files in your browser. Built with React + Vite & FastAPI for speed, privacy, and simplicity.
https://github.com/tejastn10/papyrus
fastapi pdf python react typescript vite
Last synced: 3 months ago
JSON representation
๐ Papyrus โ Securely add or remove passwords from PDF files in your browser. Built with React + Vite & FastAPI for speed, privacy, and simplicity.
- Host: GitHub
- URL: https://github.com/tejastn10/papyrus
- Owner: tejastn10
- License: mit
- Created: 2025-04-05T18:15:44.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-13T03:31:32.000Z (12 months ago)
- Last Synced: 2025-07-13T05:30:21.701Z (12 months ago)
- Topics: fastapi, pdf, python, react, typescript, vite
- Language: TypeScript
- Homepage:
- Size: 668 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Papyrus ๐





**Papyrus** is a lightweight and secure PDF management tool that helps you seamlessly **add or remove passwords** from PDF files. Built with a blazing-fast frontend using **React + Vite** and a high-performance **FastAPI** backend, Papyrus ensures privacy and ease of use โ right from your browser.
---
## โจ Features
- ๐ **Add Password**: Secure your PDF files with a password in just one click.
- ๐ **Remove Password**: Strip password protection from encrypted PDF files.
- โก **Fast & Lightweight**: Optimized for speed with Vite + React and FastAPI.
- ๐ก๏ธ **No File Storage**: All files are processed in memory โ nothing is stored on disk.
- ๐ฏ **User-Friendly UI**: Simple drag-and-drop interface for quick interaction.
---
## ๐ Getting Started
### ๐ฆ Prerequisites
Ensure you have the following installed:
- **Node.js**: v22 or later
- **Python**: v3.11 or later
- **Poetry**: for managing Python dependencies
- **Docker** (optional, for containerized setup)
---
### ๐งช Local Development
#### Backend (FastAPI)
```bash
# Navigate to backend folder
cd backend
# Install dependencies
poetry install
# Start FastAPI server
poetry run uvicorn app.main:app --reload --port 5000
````
Server will be available at: [http://localhost:5000/docs](http://localhost:5000/docs)
#### Frontend (Vite + React)
```bash
# Navigate to frontend folder
cd frontend
# Install dependencies
npm install
# Start development server
npm run dev
```
Frontend runs at: [http://localhost:3000](http://localhost:3000)
---
### ๐ณ Using Docker (Optional)
```bash
docker-compose up --build
```
This starts both the FastAPI backend and React frontend.
---
## ๐ Project Structure
```bash
papyrus/
โโโ backend/ # FastAPI backend
โ โโโ app/
โ โ โโโ api/ # API routes
โ โ โโโ utils/ # Common utility functions
โ โ โโโ models/ # Models
โ โ โโโ config/ # Settings, config
โ โ โโโ services/ # PDF encryption/decryption logic
โ โ โโโ middleware/ # Middleware
โ โ โโโ main.py # App entry point
โ โโโ tests/ # Backend unit tests
โ โโโ pyproject.toml # Poetry config
โ โโโ Dockerfile # Backend Docker setup
โ
โโโ frontend/ # React + Vite frontend
โ โโโ src/ # Main app code
โ โโโ public/ # Static assets
โ โโโ vite.config.ts # Vite configuration
โ โโโ Dockerfile # Frontend Docker setup
โ
โโโ compose.yml # Multi-service Docker config
โโโ README.md # You're here!
```
---
## ๐ API Documentation
Swagger docs are auto-generated and available at:
```bash
http://localhost:5000/docs
```
---
## โ๏ธ License
This project is licensed under the [MIT License](./LICENSE.md).
---
## ๐ Acknowledgments
- Powered by [FastAPI](https://fastapi.tiangolo.com) and [React](https://react.dev)
- PDF operations handled by [PyPDF2](https://pypdf2.readthedocs.io/)
- UI inspired by minimal productivity apps like CleanShot and Arc Browser.
---
Built with ๐ by Tejas.