Use PostgreSQL as full GUI data backend for JabRef
Currently, JabRef GUI holds all entries in memory. It even converts LaTeX to Unicode and vice versa to support better search. While this is a great UX, this leads to a huge memory consumption. The more “proper” way is to use a database (such as PostgreSQL) to store the entries. Then, not all entries need to be loaded in memory. The first step is to introduce a data-access layer: The maintable should read from SQL database, not from all in-memory. Possible future work may be: https://www.zotero.org/support/dev/client_coding/direct_sqlite_database_access and https://github.com/zotero/zotero/blob/main/resource/schema/userdata.sql.
There can be an initial phase to evaluate whether PostgreSQL is the right DBMS as backend for JabRef. For instance, DuckDB and SQLite were also discussed. Currently, PostgeSQL turned out best (especially for handling regular expression search on the database itself), but things may have changed in 2026.
This is issue https://github.com/JabRef/jabref/issues/12708.
Skills required:
- PostgreSQL, Java, JavaFX
Code places to start to look at:
- org.jabref.gui.maintable.MainTableFieldValueFormatter#formatFieldsValues
Starting points:
- Document the maintable of JabRef using Markdown and UML (starting point:
org.jabref.gui.util.ValueTableCellFactory)
Possible Mentors:
Project size:
175h (medium)