Diligence is a free and open-source, tree-based, task management system.
The idea is to break down tasks as much as you need into "actionable" tasks to lessen overwhelm increasing the chance you'll complete them. If you've done outlining before, this should be familiar to you.
As of the moment, Diligence is available as an AppImage and as a snap on the Snap Store.
For the source code and other (future) binaries, head onto Releases.
Visit the Diligence Project Page to get a sense of what's on the pipeline.
Development happens on the main branch. When we're ready to release, we merge those changes to the release branch.
At the moment, the desktop app has only been tested on Linux. If you have an instance of the release version of the app running while developing, run the debug mode with the DILIGENCE_APP_ID_PREFIX
set to something (e.g. "dev") so that it won't conflict with the release version.
See the following example command below to do this on the terminal.
DILIGENCE_APP_ID_PREFIX=dev flutter run
This environment variable has already been set on VSCode through the launch options. See .vscode/launch.json
.
If you also want to run the integration tests and not want it to interfere with a Diligence desktop app installation, add the app id prefix too:
DILIGENCE_APP_ID_PREFIX=test flutter test integration_test/all_tests.dart
SQLite is currently used as the backing store. To update the schema, we use database migrations. These are currently defined in lib/services/migrations.dart
. There are however some important considerations when adding new migrations:
- Some column operations are tricky to do in SQLite like modifying foreign key constraints. Basically the strategy is to 1.) rename the current table; 2.) create a new table that is basically the old one with the column changes; 3.) copy over the data from the old table to the new table; 4.) Delete the old table. This works but there will be errors when some columns have references to data that no longer exists in some other table. Before doing this, make sure to clean up your data on the old table first removing orphaned references first.
You might need to install libsqlite3.
sudo apt install libsqlite3-dev
In Ubuntu you can run the following
snapcraft
This creates a snap file diligence_<VERSION>_amd64.snap
. Install it with the following command:
sudo snap install ./diligence_<VERSION>_amd64.snap --dangerous
Create a pull-request from the main to the release branch. Only use "Merge pull request" option when resolving the pull request and not"Squash and merge". Only use "Squash and merge" when merging feature branches to the main branch.