TimberLog is currently under development, and is developed under the GPLv3 License.
Purpose of TimberLog
Many institutions and individuals currently use paper logbooks for documenting or tracking an enormous variety of topics, from engineering designs to maintenance performed to personal journals.
Benefits of paper logbook systems:
- Simple interface
- Cannot be easily modified without such modification being obvious
- It is very easy to archive old logbooks
Problems with paper logbook systems:
- Paper logbooks wear out during use, and pages can fall out
- There is no feasible method of using technology to more easily pull relevant historical data (search and analysis must be done manually)
- No method of sharing logbook data from one location or person to another
- Unless expensive customized logbooks are purchased, no standard logbook entry types are defined, which makes the log entries look less professional, and makes finding relevant information more difficult
TimberLog provides a simple, secure, and flexible method of logging information about any number of items or projects so that the data can be searched, exported, and shared as needed. TimberLog uses encryption, checksums, and sequential date validation to ensure entries are not modified after they have been entered into the logbook.
Example Use Cases Include:
- Equipment maintenance and troubleshooting Logbooks
- Project Engineering Logbooks
- Laboratory Data Logbooks
- Vehicle Maintenance Logbooks
- Call Logs
- Personal Journals
- Amateur Radio Logbooks
- Dream Journals
- Simple - Entries are formatted in plain text. Interfaces are simple and easy to use
- Trustworthy - Encryption, checksums, sequential date validation, database audits
- Flexible - Through the use of templates (called Logbook Types)
- Many methods of output (Text, PDF, HTML, Print)
Free and Opensource
TimberLog is Free and Opensource Software, licensed under the GPLv3 License.
Compare to other Electronic Logbook tools available on the Internet
Encryption, Security, and Data Integrity
- The underlying logbook structure is based upon the SQLite3 Database specification. If a master password is provided upon logbook creation, the entire logbook, minus the logbook metadata (Logbook Name, Logbook Description, Person who opened the logbook, etc.) is encrypted using AES-128.
- Various password options are available when making a new logbook:
- No password required
- Master password required to view or add new logbook entries
- Password required to print logbook entries
- Password required to export logbook entries to another format
- Individual passwords required by each user
- All passwords are salted with 256 random bits, and hashed using SHA-256. No plaintext passwords are ever stored.
- A checksum value is calculated for each entry in the logbook using SHA-256, taking the previous entry checksum as a salt value. This makes it difficult to change any one entry without also changing every entry that follows.
- When an entry is made, an additional checksum for the previous entry is calculated using the current entry checksum as the salt.
- The built-in Data Integrity Audit function performs the following checks:
- SQLite3 Database integrity check is performed
- Ensures no Entry IDs are missing
- Entry checksums are matched with the entry data
- The overall checksum of checksums is calculated to ensure no change has been made to the logbook as a whole.
- Each entry in the logbook is checked to ensure that the date the entry was made is sequential.
- Universally Unique Identifier (UUID) list is provided. This helps match each entry to the machine and user profile on which the entry was made.
- The UUID of the current machine and user profile is displayed
Because of the two-way checksum salting of each entry, even if someone knows the master password, in order to modify the contents of any past entry, they would have to perform calculations to modify every single entry in the logbook and also calculate the final checksum of checksums values.
TimberLog uses templates, called Logbook Types, as the foundation for all new logbooks. Logbook Types can be very basic, or can include a good deal of functionality. Some of the templating capabilities include:
Default Text – If enabled, whenever a user begins a new Logbook entry, the default text will be inserted into the entry. This can help to standardize Logbook entry formatting and input
Logbook Entry Categories – If enabled, users can select a category for their logbook entries which can be used for searching
One-Line & Multi-Line Templates – These templates allow users to insert common lines or chunks of text into their Logbook entries
More information on Logbook Types can be found in the “Logbook Type Templates” section of this manual.
- sqlite3laz - Comes with Lazarus by default, but must be installed
- RichMemo - Part of the Code and Component Repository (CCR)
- ZVDateTimeCtrls - Part of the Code and Component Repository (CCR)
- UniqueInstance - Part of the luipack Project
Basic Logbook File Format and Concept
Each logbook is essentially a SQLite3 Database with additional Metadata appended to the file. When a logbook is opened, this metadata is read to memory and temporarily stripped from the Logbook file. When the logbook is closed, the metadata is re-appended to the file along with any relevant updates.
The Metadata includes:
- A header and footer to aid in identifying and verifying the metadata record
- A checksum of the metadata contents
- A checksum of the Logbook file (minus the metadata record)
- The Logbook Name and Description
- The name of the person who originally created the logbook
- The date and time the logbook was created
- The date and time the logbook was last accessed
- The Salt value for the master password, if any
The Logbook database includes 5 Tables:
- Settings: Contains a number of settings for the display, security, and functionality of the Logbook
- Entries: Contains each Logbook Entry made by users
- Templates: Contains the Logbook Type template information that the current Logbook is based upon
- Categories: If Categories are enabled, this table contains the full list of categories available
- Users: If applicable, contains the user information for each user of the Logbook
The source code repository for TimberLog can be found at: https://github.com/Projects-and-Stuff/TimberLog
If you are interested in contributing toward the development of TimberLog, please be sure to Contact Us or submit git requests.