Devboard
A development dashboard for your projects.
Installation This project is available to sponsors only, through my Insiders program. See Insiders explanation and installation instructions .
Usage Devboard displays columns stacked horizontally, like a Kanban board. Each column is a "To Do Something" and presents information in a data table. Data tables have a header line with labels, and multiple rows presenting the information collected in your projects. Projects are supposed to be Git repositories from which we can collect information such as status, commits, branches, tags, etc.
To start using Devboard, try to run the devboard
command in your terminal. It will show you a default board with four columns:
Devboard ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ │ ▶ To Commit │ │ ▶ To Pull │ │ ▶ To Push │ │ ▶ To Release │ │ Project Details │ │ Project Bran │ │ Project Branch Co │ │ Project Details │ │ archan 1M │ │ failprint feat │ │ duty main 3 │ │ duty 2F 1X │ │ dependenpy 1D 2U │ │ git-changelog main │ │ │ │ mvodb 1F │ │ failprint 1U │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ F5 Refresh ? Help Q Exit
If the columns are empty and collapsed, that is normal. It's because Devboard does not know where to look for your projects. By default, it looks into the dev
folder in your home/user directory. To change that directory, you can modify it directly in the default board, located in your user configuration directory (use devboard --show-config-dir
), or you can set the DEVBOARD_PROJECTS
environment variable:
Once your board displays some rows in the "To Commit" column, try showing the Git status or diff with S and D keys.
Devboard ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ │ ▶ To Commit │ │ ▶ To Pull │ │ ▶ To Push │ │ ▶ To Release │ │ Project Details │ │ Project Branch Com │ │ Project Branch Co │ │ Project Details │ │ archan 1M │ │ failpri feat/c 1 │ │ duty main 3 │ │ duty 2F 1X │ │ depende 1D 2U │ │ git-cha main 1 │ │ │ │ mvodb 1F │ │ failpri 1U │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ F5 Refresh ? Help Q Exit
You can scroll using the mouse wheel and the arrows. You can dismiss the modal window with any other key press.
Background actions Try to move focus to different columns with the Tab and Shift + Tab keys. In the "To Pull" column, try to start a background action that will pull a branch using the P key. If action started successfully, you should see a notification:
Devboard ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ │ ▶ To Commit │ │ ▶ To Pull │ │ ▶ To Push │ │ ▶ To Release │ │ Project Details │ │ Project Bran │ │ Project Branch Co │ │ Project Details │ │ archan 1M │ │ failprint feat │ │ duty main 3 │ │ duty 2F 1X │ │ dependenpy 1D 2U │ │ git-changelog main │ │ │ │ mvodb 1F │ │ failprint 1U │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ F5 Refresh ? Help Q Exit S Show status D Show diff
Upon success, you'll see a success notification, and the row will be removed from the table:
Devboard ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ │ ▶ To Commit │ │ ▶ To Pull │ │ ▶ To Push │ │ ▶ To Release │ │ Project Details │ │ Project Bran │ │ Project Branch Co │ │ Project Details │ │ archan 1M │ │ failprint feat │ │ duty main 3 │ │ duty 2F 1X │ │ dependenpy 1D 2U │ │ git-changelog main │ │ │ │ mvodb 1F │ │ failprint 1U │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ F5 Refresh ? Help Q Exit S Show status D Show diff
If there is an error, you'll see an error notification:
Devboard ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ │ ▶ To Commit │ │ ▶ To Pull │ │ ▶ To Push │ │ ▶ To Release │ │ Project Details │ │ Project Bran │ │ Project Branch Co │ │ Project Details │ │ archan 1M │ │ failprint feat │ │ duty main 3 │ │ duty 2F 1X │ │ dependenpy 1D 2U │ │ git-changelog main │ │ │ │ mvodb 1F │ │ failprint 1U │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ F5 Refresh ? Help Q Exit S Show status D Show diff
Sometimes the column will prevent you from applying action, for example when the repository is dirty:
Devboard ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ │ ▶ To Commit │ │ ▶ To Pull │ │ ▶ To Push │ │ ▶ To Release │ │ Project Details │ │ Project Bran │ │ Project Branch Co │ │ Project Details │ │ archan 1M │ │ failprint feat │ │ duty main 3 │ │ duty 2F 1X │ │ dependenpy 1D 2U │ │ git-changelog main │ │ │ │ mvodb 1F │ │ failprint 1U │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ F5 Refresh ? Help Q Exit S Show status D Show diff
Devboard will also prevent applying multiple actions rapidly to the same project, to prevent race conditions:
Devboard ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ │ ▶ To Commit │ │ ▶ To Pull │ │ ▶ To Push │ │ ▶ To Release │ │ Project Details │ │ Project Bran │ │ Project Branch Co │ │ Project Details │ │ archan 1M │ │ failprint feat │ │ duty main 3 │ │ duty 2F 1X │ │ dependenpy 1D 2U │ │ git-changelog main │ │ │ │ mvodb 1F │ │ failprint 1U │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ F5 Refresh ? Help Q Exit S Show status D Show diff
Row selection You can select multiple rows and apply actions on all selected rows at once.
To select a row, press Space . To unselect it, press Space again. To select all rows, press Ctrl + A or Num * . To reverse the selection, press ! . To expand the selection upwards or downwards, hold Shift and press Up or Down . Devboard ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ ┌ ─────────────────────── ┐ │ ▶ To Commit │ │ ▶ To Pull │ │ ▶ To Push │ │ ▶ To Release │ │ Project Details │ │ Project Bran │ │ Project Branch Com │ │ Project Details │ │ archan 1M │ │ failprint feat │ │ duty main 3 │ │ duty 2F 1X │ │ dependenpy 1D 2U │ │ git-changelog main │ │ │ │ mvodb 1F │ │ failprint 1U │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ └ ─────────────────────── ┘ F5 Refresh ? Help Q Exit
Building your own board Follow our tutorial !
Choosing boards Boards in the configuration directory can be chosen by passing their name to the devboard
command:
You can set a board as the default one in Devboard's configuration file. Use devboard --show-config-dir
to get its location, then:
Now when calling devboard
it will use myboard
instead of the default
one.
Finally, you can also pass a path to a board module:
devboard ./path/to/myboard.py