Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
660 changes: 660 additions & 0 deletions LICENSE.md

Large diffs are not rendered by default.

13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# RedactPDF
# <img src="frontend/public/logo.png" alt="RedactPDF" width="40" align="center" /> RedactPDF

Local web app for redacting sensitive content from PDF files. Targets manual
rectangles, text search, regex (single- or multi-line), and presets (email,
Expand Down Expand Up @@ -79,7 +79,7 @@ worry about CORS in development.

1. Drop a PDF into the upload area.
2. Add redaction rules in the right pane:
- **Selection** : select text in the viewer and click "Add as rule".
- **Selection** : select text in the viewer and click "Redact selection" / "Censurer la sélection".
- **Manual rectangle** : toggle the draw tool and trace rectangles.
- **Whole page** : censor the current page.
- **Exact / regex** : typed rules with options (case sensitivity,
Expand Down Expand Up @@ -163,4 +163,11 @@ behind nginx/Caddy). With same-origin serving, you do not need CORS.

## License

See repository root.
RedactPDF is licensed under the **GNU Affero General Public License v3.0**
(AGPL-3.0) — see [LICENSE.md](LICENSE.md) for the full text.

In short: you may use, study, modify, and redistribute it freely, but any
redistributed or network-hosted (SaaS) version, including modified ones,
must make its **complete corresponding source available under the same
AGPL-3.0 terms**. This copyleft is also required by the core dependency
PyMuPDF, which is itself AGPL-3.0 (or commercial).
23 changes: 13 additions & 10 deletions backend/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,24 @@
name = "redactpdf-backend"
version = "0.1.0"
requires-python = ">=3.10"
# Pinned to the versions the test suite + CI are validated against.
# Bump deliberately (especially pymupdf, which drives redaction behaviour),
# then re-run `ruff check . && pytest`.
dependencies = [
"fastapi",
"uvicorn",
"pymupdf",
"python-multipart",
"phonenumbers",
"fastapi==0.128.0",
"uvicorn==0.40.0",
"pymupdf==1.26.7",
"python-multipart==0.0.22",
"phonenumbers==9.0.22",
]

[project.optional-dependencies]
dev = [
"pytest",
"httpx",
"ruff",
"reportlab",
"pypdf",
"pytest==9.0.2",
"httpx==0.28.1",
"ruff==0.14.14",
"reportlab==4.4.9",
"pypdf==6.6.2",
]

[tool.pytest.ini_options]
Expand Down
Loading
Loading