Personal Knowledge and Tasks Management
This is my first blog post, its goal is to be an easily shareable reference whenever I talk about my Personal Knowledge Management System (PKMS) with people. But I might keep on writing stuff.
This is my way of organising my life as of April 12, 2025. =)
Some sort of introduction
Have you ever spent hours configuring a complex software or learning someone’s system only to discover it’s now over-engineered and so inefficient that you end up abandoning all those hours invested?
In this post, I’ll share how I abandoned complex Personal Knowledge Management Systems (PKMS) in favor of a simpler Markdown-based approach and the system I built around it.
In short, my system is a minimalist Markdown knowledge and task management system that integrates tasks seamlessly with notes and projects, prioritizing simplicity and efficiency over feature bloat.
The point is not necessarily to propagate my setup, but I’ll show you how to set it up. I want you to question yours. Is this efficient ? Can it be simplified ?
Background
I used Todoist for multiple years. When I discovered PKMS, I tried the mainstream ones such as Obsidian and Anytype, and of course, I brought my tasks with me.
These pieces of software were too feature-rich for me. I could spend a lot of time designing a complex system that would prove to be very inefficient in practice.
I don’t store a lot of stuff, mostly links and text notes, I mainly write about my current projects as it helps me think. Every time I needed to add a simple task, the cluttered environment I was getting from these systems made me lose motivation. I found myself writing fewer tasks than I used to in Todoist.
I love the idea of embedding tasks directly into my knowledge and projects. But no mainstream PKMS allowed me to do it efficiently: I don’t want a pop-up window with 10 text fields for my new task that I’ll then need to link to my current project, I just want to write - [ ] send this text
next to the text I need to send. That’s efficiency.
I got tired of it and abandoned fully-featured PKMS. From that point, it was just me and Markdown:
- I can edit Markdown from my default text editor,
- I can share Markdown files easily (between computers/with people),
- I can version-control it.
Now I needed a way to overview the tasks I was writing in my Markdown files. I developed Vault-tasks which is a TUI (Text User Interface - a program that runs in your terminal) viewer that explores your Markdown vault and displays its tasks. I know that TUIs are not super super-friendly for non-technical people, but it contributes to the simplicity and efficiency of it. There is a handy desktop entry. A lot of features have been added since I started this project, for me the most important one is the fact that all data is stored in my Markdown files.
Maybe someday, vault-tasks will have a graphical version ! If you need any help, feel free to reach out.
vault-tasks in on the left, the Markdown file is on the right
I did spend more time building this whole system than fine-tuning other over-engineered PKMS, but I learned a lot and found something that works for me.
You can use the system without vault-tasks, but you’ll lose some quality-of-life features and may lack a good overview of your tasks.
The System
The system has two main components:
- Knowledge management which is up to you in its form
- The task system which integrates seamlessly
The Task System
The task system was designed as a Markdown extension to use with the vault-tasks software.
The whole point of it is to be able to write tasks anywhere in my notes.
If it seems complicated at first, rest assured, a basic task can be - [ ] Dentist tomorrow
. Every time you run vault-tasks, your tasks will be rewritten and relative dates keywords will be replaced with the concrete date it points to.
Writing tasks
<!-- An example task in your markdown file -->
- [ ] Simplest task
- [ ] Dated task 10/10
A description
- [ ] A subtask
- [ ] Tagged task #tag1 #tag2
- [ ] Task with priority p5
- [/] a subtask 10/23 @today c50
Partly done
- [-] This one is canceled
Task Syntax Reference Table
The following is from the software’s homepage.
Token | Meaning |
---|---|
- [ ] (- [x] , …) |
declares a task and sets its state |
p1 (p10 , …) |
sets the priority |
c50 (c99 , c150 , …) |
Sets the completion percentage |
#tag |
is a tag, a task can have zero or more tags |
@today (@tod , @t ) |
is a special tag that will mark the task as part of today’s tasks |
23/10 (2024/23/10 ) |
sets the due date with a literal date |
today (tdy ) |
sets the due date to today |
tomorrow (tmr ) |
sets the due date to tomorrow |
a day of the week (monday or mon , etc) |
sets the due date to the next occurrence of that day |
3d (3m, 3w, 3y , …) |
means “in 3 days” and will set the due date accordingly |
- Task states are Done (
x
), To-Do (/
) and Canceled (-
), @today
allows you mark a task for today while keeping a due date. It will show up with a ☀️ invault-tasks
,- When you run
vault-tasks
, all relative dates are automatically converted to fixed (literal) dates. Thanks to this,vault-tasks
does not store any data except its config file, - Other tokens will be part of the title of that task,
- Descriptions and subtasks are declared using indents (see configuration).
Layout
.
├── 1_LogBook.md # Orphan tasks, journal entries, ...
├── 2_Projects # Basically anything that will contain tasks
├── 3_Resources # Stuff you'll need later
└── 4_Archives # Anything that is not relevant anymore
Modularity
You can see these foundations as modules. You can (should!) add or remove modules depending on your needs.
The structure is inspired by the PARA system (Projects, Areas, Resources, Archives).
As you move on in life, your needs change, the Archives module can be a way to keep logs of your change.
Getting Started
On a UNIX system:
# Install the latest vault-tasks binary:
# https://github.com/louis-thevenet/vault-tasks/releases
mkdir -p pkms/{2_Projects, 3_Resources, 4_Archives}
cd pkms/
echo "- [ ] Fill my PKMS ! today" > 1_LogBook.md
vault-tasks --vault-path ./ # Opens vault-tasks on your new vault
Or
- Replicate the directory structure
- Start writing in your log book (e.g.
- [ ] Fill my PKMS ! today
) - Install vault-tasks to have an overview of your newly added tasks
Core Modules
The Log Book
The LogBook holds day-to-day or week-to-week entries. There are a lot of ways to organise this. One might prefer to make it a directory where each file is a daily note.
I like to have one log book per year in which I write my week-to-week notes, the most recent entries are at the start of the file.
# Log Book
## Week 6
- [ ] Taxes @today
- [ ] Dentist 03/03 13:30 #health
Some address...
## Week 5
- [x] Meeting with team 01/28 #work
### Monday
Something specific to monday
I don’t always write day headers, only if it’s necessary.
You can move entries from one week to another if you need, but I wouldn’t recommend it since you lose information about when you first added it.
Projects
The Projects module is used to store any activities that generate tasks or isn’t passive. This blog post is a project in my pkms for instance since it’s being worked on and holds tasks (that you won’t see :p).
You can have two projects directories if you want to split your professional activities from your personal ones.
If a project has assets or multiple files, you can make it a subdirectory.
It is good practice to have a clean Projects module, as soon as you finish something, archive it.
Resources
The Resources module is used to store information you might need later. This module exists in order to not clutter your Projects module.
If you find yourself writing often in a resource, it might be a project.
Here is an example of resources of mine:
./3_Resources/NixOS/
├── SecretsManagementNixOS.md
└── WontBoot.md
Note that subdirectories are optional, with fuzzy-search and good software, you don’t necessarily need to always sort everything.
Archives
When something is finished or not relevant anymore, archive it. It is interesting to red old notes and projects as a self-reflection exercise from time to time.
Some Practice Example
This is a project I wrote when I needed to update my expired passport and had a bunch of things to keep track of.
Some useful links:
- https://passeport.ants.gouv.fr/demarches-en-ligne/effectuer-le-renouvellement-de-votre-passeport
- https://www.service-public.fr/particuliers/vosdroits/F21091
- [x] Appointment at town hall 12/11/2024 15:10:00
appointment number: AAABBB
Stuff I need:
- [x] current ID
- [-] Old passport if it expired less than 5 years ago
It's expired since 2010
- [x] 1 ID photo less than 6 months old
- [x] 1 proof of address
Phone bill (mobile phone works)
- [x] My pre-application (and/or the QR code — they recommend printing it)
./pre-application.pdf
- [ ] Pick up the new passport 02/10/2025
Conclusion
Tasks are a big part of my workflow et reducing the friction between my task system and how I write my notes helped me stay motivated to use my PKMS.
I hope this gave you some ideas, and maybe you’ll rethink your setup !
Tips
Vault-tasks configuration
- Set your default vault-path
- Put the Archives module in the ignore list (see vault-tasks GitHub page)