Skip to main content

SciLibra logo

SciLibra

Your scientific articles, PDFs and notes - organised, searchable and safely backed up.
A free, open-source desktop app for researchers: BibTeX + PDF library, built-in PDF reader & annotator, and one-click Google Drive backup.

PyPI Python Kivy Platforms License

Features · Screenshots · Installation · Quick start · Google Drive backup · Author

SciLibra main window


✨ Features

📥 Add articles your way

  • Import a .bib file - every entry type; PDFs named <key>.pdf next to it are linked automatically
  • Paste BibTeX from Google Scholar or a journal website
  • Drop in PDFs (files or a whole folder) - the DOI is read from each PDF and the details are downloaded from Crossref
  • Fill in a form - or just type a DOI and press Fetch details

🔎 Find anything in seconds

  • Group by keywords, tag groups, authors, year or journal - with counts
  • Filter any list as you type
  • Search titles, authors, abstracts, keywords, comments, DOI… and the notes inside your PDFs
  • Several terms with ; - any term, or all of them

📖 Read & annotate

  • Built-in reader that reopens each paper where you stopped
  • Highlight, underline, strike out, sticky notes, text boxes, pen, shapes, eraser, 6 colours, undo
  • Select text to copy it with a citation - “…” (Xu et al., 2024, p. 5)
  • Annotations are saved inside the PDF, so Acrobat, Zotero or Okular show them too

📝 Your notes, everywhere

  • Every highlight and note is listed with the article and is searchable
  • Save them as comments, or export them to Markdown for your literature review
  • Add your own comments and tag groups (to-read, thesis chapter 2…)

☁️ One-click Google Drive backup

  • Library, PDFs and annotations backed up automatically
  • A dated copy every day for the last 10 days
  • Restore everything on a new computer
  • SciLibra only sees the files it created - never your other Drive files

🎨 Modern and friendly

  • Material-style design, light and dark themes
  • Animated start screen, hover effects, rounded cards
  • A Help center with step-by-step guides and keyboard shortcuts
  • Safe by design: confirmations before deleting, PDFs are never deleted, automatic backups

📸 Screenshots

Browse by keywords

Browse by keywords, tag groups, authors, year or journal

PDF reader with highlights

Built-in reader with highlights and notes

Dark theme

Dark theme

Help center

Help center

Start screen

Start screen

About page

About

🚀 Installation

Requires Python 3.9 or newer. Install from PyPI:

pip install scilibra
scilibra                            # start it (or: python -m scilibra)
scilibra path/to/other-library.db   # open another library

Tip: install it in its own environment, e.g. pipx install scilibra or a virtual environment.

Install from source
git clone https://github.com/AlsammanAlsamman/SciLibra.git
cd SciLibra
python3 -m venv .venv
.venv/bin/pip install -e .          # Windows: .venv\Scripts\pip install -e .
.venv/bin/scilibra

Your library lives in ~/.local/share/scilibra/library.db (Windows: %APPDATA%\SciLibra, macOS: ~/Library/Application Support/SciLibra). Set SCILIBRA_HOME to use another folder.

Desktop shortcut (Linux)

Edit the paths in SciLibra.desktop, then:

cp SciLibra.desktop ~/.local/share/applications/
Coming from SciLibra 1.x?

On the first start, an existing scilibraLibrary.db in the current folder or the project folder is copied to the location above and upgraded. The original file is not changed, and a backup of the pre-upgrade copy is kept next to it.

🧭 Quick start

  1. Add › Import BibTeX file (or Add › Add PDF files).
  2. PDFs somewhere else? Library › Link PDF folder connects PDFs named <key>.pdf in that folder and its sub-folders. For other file names use Attach PDF…
  3. Choose Group by › Keywords (or Tag groups, Authors…) and click a group to open it.
  4. Select an article to see its details - double-click it to read and annotate the PDF.
  5. Press Google Drive (top right) to switch on the backup.

Everything is also explained inside the app: Help › How to use SciLibra.

⌨️ Keyboard shortcuts

Main window PDF reader
Ctrl+F Search the library H U S Highlight · underline · strike
Ctrl+L Filter the list N B Sticky note · text box
Ctrl+I Import BibTeX D R O A L Pen · rectangle · ellipse · arrow · line
Ctrl+N New article E V T Eraser · select · select text
Ctrl+E Edit Ctrl+Z Undo
Ctrl+O / Enter Open the PDF Ctrl+F Find in the PDF
↑ ↓ Move in the list PgUp PgDn Previous / next page
Esc Back Esc Close the reader

☁️ Google Drive backup

Press Google Drive › Sign in with Google. Your browser opens: choose your account, tick "See, edit, create and delete only the specific Google Drive files you use with this app" and press Continue. The button turns green and the backup starts.

What is stored in the SciLibra folder on your Drive:

SciLibra/
├── library.db                      the whole library: details, keywords, tag groups, comments, previews
├── Backups/library-YYYY-MM-DD.db   one copy per day, last 10 days
└── PDFs/<key>.pdf                  every PDF, including your highlights and notes

After the first backup only what changed is uploaded - a few seconds after each change and when you close SciLibra. Temporary Google errors are retried automatically. Restore from Drive… sets up the same library, with all PDFs, on another computer.

Privacy: SciLibra only gets access to the files it creates itself (drive.file) - never to your other files. Your sign-in is stored only on your computer, and you can remove it at any time with Sign out or at myaccount.google.com/permissions.

For maintainers: the OAuth client

The OAuth client (type Desktop app) ships as scilibra/assets/google_client.dat. To replace it, download the client JSON from Google Cloud Console and run

python -c "from scilibra.core.gdrive import bundle_client_file as b; b('client_secret.json', 'scilibra/assets/google_client.dat')"

Never commit the JSON itself (it is git-ignored). Users can also use their own client with Load client file… in the Google Drive dialog.

🛠️ Development

.venv/bin/pip install -e ".[test]"
.venv/bin/python -m pytest                        # core tests + end-to-end GUI scenario
.venv/bin/python tests/gui_scenario.py shots/     # run the GUI scenario and keep its screenshots
.venv/bin/python tools/make_screenshots.py        # refresh the README screenshots (add --dark for dark)
Project layout
scilibra/
  core/            GUI-independent logic (usable from scripts)
    models.py      Article data model
    database.py    SQLite storage, schema upgrades (compatible with 1.x libraries)
    bibtex.py      BibTeX import/export
    pdf.py         first-page previews, DOI detection, reading annotations (PyMuPDF)
    annotate.py    creating/editing annotations and saving them into the PDF
    crossref.py    DOI -> metadata (Crossref REST API)
    gdrive.py      Google Drive sign-in, backup and restore
    library.py     high-level operations: import, link PDFs, search, duplicates, statistics
  gui/             Kivy user interface
    app.py         main window           viewer.py      PDF reader / annotator
    theme.py       colours (light/dark)  widgets.py     hover, rounded fields
    splash.py      start screen          helpcenter.py  Help center and About
    layout.kv      the look of everything
  config.py        settings and data locations
tests/             pytest suite and GUI scenario
tools/             screenshot generator

Using the core from Python:

from scilibra.core import Library
lib = Library("my.db")
lib.import_bibtex_file("refs.bib")
print(lib.search("GWAS").keys)
lib.export_bibtex("out.bib")

👤 The author

Alsamman M. Alsamman

Alsamman M. Alsamman - creator of SciLibra

📧 smahmoud [at] ageri.sci.eg · A.Alsamman [at] cgiar.org · SammanMohammed [at] gmail.com
🐙 github.com/AlsammanAlsamman

Found a bug or have an idea? Open an issue.

📄 License

MIT License. The software comes with no warranty - use at your own risk. This software is not intended for commercial use.

Metadata

Release files for scilibra 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scilibra 2.0.0
File Size Uploaded
scilibra-2.0.0.tar.gz 644.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scilibra 2.0.0
File Interpreter ABI Platform
scilibra-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.3 MB

Release files / scilibra-2.0.0.tar.gz

Download URL scilibra-2.0.0.tar.gz
Size 644.4 kB
Tags Source
SHA-256 checksum
How to use checksums
8375fdb8868844c99385f3183a4efe49c301fdb8b8dab53ec3ff0956db73fe50
BLAKE2b-256 checksum
How to use checksums
441920fe636a4513350e7e3ac8ba94ab8bf41f68634d4a77d4ebcc4eebc17d27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / scilibra-2.0.0-py3-none-any.whl

Download URL scilibra-2.0.0-py3-none-any.whl
Size 634.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f4c46d63d2d1d5bf3b57d3fe94817ae270f6d80df44063b275aa06897f6dd15a
BLAKE2b-256 checksum
How to use checksums
5bf96524a065b2c13c7683a5bce553c7eaf79addc5d77fa7afe57fef5050d37d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

2.0.1

2 release files

This release

2.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page