Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/tfonteyn/NeverTooManyBooks/llms.txt

Use this file to discover all available pages before exploring further.

NeverTooManyBooks tracks not just what books you own but where you are with each one. Every book has a read flag (read or unread) stored in the read database column. When you enable reading-progress tracking in a style, you can also record your exact progress as a page number (page 147 of 432) or as a percentage complete. Start and finish dates are logged automatically when you change status, but you can also set them manually. The date you finished reading feeds directly into the booklist grouping system, so you can arrange your shelves chronologically by the year you read each book.

Reading Status and Progress

The read state of a book is controlled by a boolean read flag (true = read, false = unread). In addition, you can optionally record reading progress:
Stateread flagProgress
Unreadfalse0 % or not set
ReadingfalseA page number or percentage between 0 and 100 %
Readtrue100 %
Internally the ReadingProgress class encodes progress as either a percentage integer (0–100) or a currentPage / totalPages pair, stored as a JSON string in the database column read_progress. For example: {"cp":147,"tp":432} for page-based progress, or {"pct":34} for percentage-based progress.
The reading-progress display is controlled per style. When Read Status with Progress is disabled in your active style, the book shows a simple Read checkbox. When it is enabled, the read field is replaced by a progress label, progress bar, and an edit button that opens the reading-progress dialog.

Marking a Book as Read

The steps differ slightly depending on whether your active style uses the simple checkbox or the full progress display.

When using the simple Read/Unread checkbox

1

Open the book details

Tap the book in the list to open its details screen.
2

Locate the Read checkbox

The Read checkbox is shown in the reading-status area of the details screen.
3

Tap the checkbox

Tap the checkbox to toggle between read and unread. When you check it, today’s date is automatically written to the Date Finished field if it is not already set.

When using the progress display

1

Open the book details

Tap the book in the list to open its details screen.
2

Tap the edit button next to the progress label

The reading-status area shows your current progress and a small edit icon. Tap the edit icon to open the reading-progress dialog.
3

Set progress to 100 % or mark as finished

In the dialog, set the percentage to 100 or the current page equal to the total pages. The app marks the book as read and sets today’s date as the finish date if it is not already filled in.
The Date Finished (read_end) field is used by booklist styles to group books by Year Read. If you set the date manually (e.g. for books you read before installing the app), make sure to enter the correct year so grouping works as expected. You can always edit the date in Edit Book → Notes.

Recording Reading Progress

Reading progress is available when the Read Status with Progress option is enabled in your active style. You can log how far through a book you are in two ways:
1

Open the reading-progress dialog

On the book details screen, tap the edit button next to the progress label. Alternatively, go to Edit Book → Notes and update the reading-progress fields there.
2

Choose a mode

Select whether to track progress by page number or by percentage using the toggle in the dialog.
3

Enter your progress

  • Page mode: enter your current page and the total page count (e.g. 147 of 432). The percentage is calculated automatically.
  • Percentage mode: enter a value from 0 to 100.
4

Confirm

Tap OK. The progress is saved to the read_progress database column.
The ReadingProgress class that handles this data supports two constructors plus a factory method:
// Percentage-based progress
new ReadingProgress(34);               // 34 %

// Page-based progress
new ReadingProgress(147, 432);         // page 147 of 432

// Shortcut for a finished or not-started book
ReadingProgress.finished(true);        // 100 %
ReadingProgress.finished(false);       // 0 %

Date Started and Date Finished

Both dates are stored in the read_start and read_end database columns.
  • Date Started is set to today’s date automatically when you begin recording reading progress (if it is not already filled in).
  • Date Finished is set to today’s date automatically when you mark the book as read.
  • Both dates can be edited manually in Edit Book → Notes using the date picker, so you can backfill history for books read before you installed the app.

Filtering and Grouping by Reading Status

Reading status integrates with booklist styles in two ways: Grouping — In any style, add a Read or Reading Progress group level. Your books will be sectioned under headers like “Read” and “Unread”. Filtering — Each bookshelf supports per-shelf filters. Add a Read Status filter to a shelf to show only unread books, only books currently being read, or only finished books.
Create a dedicated bookshelf called “Reading Queue” and add a filter that shows only Unread books. Then apply a style that sorts by Date Added descending so your most recently acquired books float to the top. Switch to this shelf whenever you need something new to read.

Editing Status in Bulk

There is no bulk-edit screen for reading status, but you can use the local search or filter system to isolate a set of books and then update them individually from the details screen. For large imports (e.g. migrating from another app via CSV), the CSV import format supports the read, read_start, and read_end columns so you can set status for many books at once.

Build docs developers (and LLMs) love