Bouquin is a simple, opinionated notebook application written in Python, PyQt and SQLCipher. https://pypi.org/project/bouquin/
Find a file
Miguel Jacq 0b3249c7ef
All checks were successful
CI / test (push) Successful in 3m29s
Lint / test (push) Successful in 28s
Trivy / test (push) Successful in 21s
Fix reloading summary on collapsed Time Log widget after closing Time Log dialog
2025-11-19 12:46:38 +11:00
.forgejo/workflows Add the ability to choose the database path at startup. Add more tests. Add bandit 2025-11-17 15:15:00 +11:00
bouquin Fix reloading summary on collapsed Time Log widget after closing Time Log dialog 2025-11-19 12:46:38 +11:00
screenshots Add ability to set alarm reminders 2025-11-18 20:38:39 +11:00
tests Fix tag graph test 2025-11-19 12:38:35 +11:00
.gitignore Ignore .db 2025-11-18 17:32:53 +11:00
CHANGELOG.md Initial work on time logging 2025-11-18 21:51:04 +11:00
LICENSE Initial commit 2025-10-31 16:00:54 +11:00
poetry.lock Add tag relationship visualisation graph tool 2025-11-18 17:29:57 +11:00
pyproject.toml Add tag relationship visualisation graph tool 2025-11-18 17:29:57 +11:00
README.md Initial work on time logging 2025-11-18 21:51:04 +11:00
release.sh Add AppImage 2025-11-12 10:00:21 +11:00
tests.sh Add option to automatically move yesterday's unchecked TODOs to today on startup 2025-11-06 15:45:31 +11:00
vulture_ignorelist.py Add tag relationship visualisation graph tool 2025-11-18 17:29:57 +11:00

Bouquin

Introduction

Bouquin ("Book-ahn") is a simple, opinionated notebook application written in Python, PyQt and SQLCipher.

It uses SQLCipher bindings as a drop-in replacement for SQLite3. This means that the underlying database for the notebook is encrypted at rest.

To increase security, the SQLCipher key is requested when the app is opened, and is not written to disk unless the user configures it to be in the settings.

There is deliberately no network connectivity or syncing intended, other than the option to send a bug report from within the app.

Screenshots

General view

Screenshot of Bouquin

History panes

Screenshot of Bouquin History Preview pane Screenshot of Bouquin History Diff pane

Tag relationship visualiser

Screenshot of Tag Relationship Visualiser

Features

  • Data is encrypted at rest
  • Encryption key is prompted for and never stored, unless user chooses to via Settings
  • Every 'page' is linked to the calendar day
  • All changes are version controlled, with ability to view/diff versions and revert
  • Text is Markdown with basic styling
  • Tabs are supported - right-click on a date from the calendar to open it in a new tab.
  • Images are supported
  • Search all pages, or find text on page (Ctrl+F)
  • Add tags to pages, find pages by tag in the Tag Browser, and customise tag names and colours
  • Automatic periodic saving (or explicitly save)
  • Transparent integrity checking of the database when it opens
  • Automatic locking of the app after a period of inactivity (default 15 min)
  • Rekey the database (change the password)
  • Export the database to json, html, csv, markdown or .sql (for sqlite3)
  • Backup the database to encrypted SQLCipher format (which can then be loaded back in to a Bouquin)
  • Dark and light themes
  • Automatically generate checkboxes when typing 'TODO'
  • It is possible to automatically move unchecked checkboxes from yesterday to today, on startup
  • English, French and Italian locales provided
  • Ability to set reminder alarms in the app against the current line of text on today's date
  • Ability to log time per day and run timesheet reports

How to install

Make sure you have libxcb-cursor0 installed (it may be called something else on non-Debian distributions).

If downloading from my Forgejo's Releases page, you may wish to verify the GPG signatures with my GPG key.

From PyPi/pip

  • pip install bouquin

From AppImage

  • Download the Bouquin.AppImage from the Releases page, make it executable with chmod +x, and run it.

From source

  • Clone this repo or download the tarball from the releases page
  • Ensure you have poetry installed
  • Run poetry install to install dependencies
  • Run poetry run bouquin to start the application.

From the releases page

  • Download the whl and run it

How to run the tests

  • Clone the repo
  • Ensure you have poetry installed
  • Run poetry install --with test
  • Run ./tests.sh