Projects workflow
2025-04-25 13:00
I consider this a notes document so it will be cross-posted over to notes.zkbro.com and maintained there as it evolves.
Background
I used to be quite good at managing projects, but somewhere along the line I fell off the wagon. I think it was a work thing. A new role introduced complexity with having to work in shared workspaces, and new systems and requirements around workflows which I had no choice in. But also my own interest in different PKM systems and ways of doing things got the better of me.
This is an attempt to regain structure in my project management. After all, life is made up of projects. I like the GTD definition:
Projects are defined as outcomes that will require more than one action step to complete and that you can mark off as finished in the next 12 months
Though I don't think the 12 month barrier matters. The main thing is that it can be finished. It falls into an area of responsibility if it is ongoing, eg. finances, being a son and a brother, managing health.
The main goals of this project are to be able to:
- quickly capture project ideas and subsequent notes or files, and
- retrieve project information quickly.
It's been fun to revisit topics such as PKM, GTD and PARA, whilst writing some more code to help me do what I need.
Method
Initiating a project
Use the PARA method, filing any project in ~/01-Projects/
. The other folders are:
- ~/02-Areas/
- ~/03-Reference/
- ~/04-Archive/
name-folders-without-spaces or capital letters, beginning with date of creation eg. 20250420-project-apricot
. This helps navigating to the directory in the terminal and keeps lists nice and tidy.
Include a PID.md
(Project Initiation Document) outlining project objectives etc.
To make this as quick as possible, automate initiation of project with a script. I've done a mishmash of python and command line code/commands:
from datetime import datetime
import os
import pytz
config_dir = '/home/zkbro/.config/create_proj/'
projects_dir = '/home/zkbro/01-Projects/'
current_date = datetime.now().astimezone(pytz.timezone('Pacific/Auckland')).strftime('%Y%m%d')
project_name = input("Name of project: ")
new_dir = current_date + "-" + project_name.replace(" ","-").lower()
full_path = projects_dir + new_dir
new_pid = full_path + "/PID.md"
os.makedirs(full_path, exist_ok=True)
os.system(f'cp "{config_dir}PID_template.md" "{new_pid}"')
os.system(f'sed -i "3s/$/{project_name}/" {new_pid}')
os.system(f'$EDITOR {new_pid}:7') # :7 will only work with the helix text editor, opening the file at line 7, ready for a brief description of the project.
print(project_name, "project created at", full_path)
In the config_dir
I have a PID_template.md
which looks like this:
# Project Initiation Document
## Project:
### Objectives
### Scope
### Outcomes
### Resources
### Next Actions
The code prefills the Project Name
and opens it in the Objectives
section so I can quickly write what I was thinking about the project. If it's a tiny project then I wont bother with the other headings, but they may be useful for more complex projects.
Working on the project
Go nuts. Dump everything in here. Clean up later.
Archiving
On completion, archive folder into ~/04-Archive/01-Projects/
Delete any identification documents before archiving eg. scans of drivers license, passport, banks statements etc.
Move useful reference material into ~/03-Reference/
If the project is code, once it is in a ready state, move it to a Codeberg repo, create a README.md
merging what's necessary from the PID.md
, and archive the folder. Clone repo in ~/repos/user/
folder to manage further updates with git.
Next steps
Align syncing with my Android so I can capture project ideas remotely. I use Obsidian and Syncthing, so I could definitely align templates and folders without the use of the script. Sounds like a project yeah?
~/01-Projects/20250425-align-projects-across-devices
created.