Making it easier to work with Project notes in NotePlan. Start, regularly review, pause, complete and cancel projects. Inspired by the PARA and 'Getting Things Done' methods, but more widely applicable.
Unlike many task or project management apps, NotePlan has very little enforced structure, and is entirely text/markdown based. This makes it much more flexible, but makes it less obvious how to use it for tracking and managing complex work, loosely referred to here as 'Projects'.
This plugin lets you easily a single list of active projects, and their progress towards completion. It helps regularly review Project notes -- an approach that will be familiar to people who use David Allen's Getting Things Done methodology, or any other where regular reviews are important.
The /project lists command shows the Project Review List screen, showing the projects due for review from various different NotePlan folders:

If, like me, you're using the helpful PARA Approach, then your Areas are also a form of Project, at least as far as Reviewing them goes. I have another 60 of these.
After each project name (the title of the note) is an edit icon, which when clicked opens a dialog with helpful controls for that particular project:

User George (@george65) has recorded two video walkthroughs that show most of what the plugin does (recorded using an earlier version of the plugin, so the UI is different):
Inside Look: How George, CMO of Verge.io, Uses NotePlan for Effective Project Management featuring this and my Dashboard plugin.
Walk-through of Reviews in NotePlan with Project + Reviews Plugin (Note: this was using v0.10, and there have been important improvements since then.)
You might also like:
Each Project is described by a separate note, and has a lifecycle something like this:

Each such project contains the #project hashtag, @review(...) and some other metadata fields (see below for where to put them). For example:
# Secret Undertaking
#project @review(2w) @reviewed(2021-07-20) @start(2021-04-05) @due(2021-11-30)
Aim: Stop SPECTRE from world domination
## Details
* [x] Get briefing from 'M' at HQ
* [x] recruit James Bond
* [ ] task 'Q' with building a personal jetpack (with USB ports)
* [ ] set up team Deliveroo account
...
The fields I use are:
@review(...): interval to use between reviews, of form [number][bdwmqy]:
@reviewed(YYYY-MM-DD): last time this project was reviewed, using this plugin@nextReview(YYY-MM-DD): specific date for next review (if wanted)@start(YYY-MM-DD): project's start date@due(YYY-MM-DD): project's due date@completed(YYY-MM-DD): date project was completed (if relevant)@cancelled(YYY-MM-DD): date project was cancelled (if relevant)Aim: free text: optional line, and not used by this pluginProgress: N:YYYY-MM-DD: one-line description: your latest summary of progress for this N% (optional). If present this is shown in the projects list; if not, the % completion is calculated as the number of open and closed tasks.Similarly, if you follow the PARA method, then you will also have "Areas of responsibility" to maintain, and I use a #area tag to mark these. These don't normally have start/end/completed dates, but they also need reviewing. For example:
# Car maintenance
#area @review(1m) @reviewed(2021-06-25)
Aim: Make sure 007's Aston Martin continues to run well, is legal etc.
## One-off tasks
* [x] patch up bullet holes after last mission @done(2021-06-20)
## Regular tasks
* check tyres @repeat(+1m) >2021-07-23
* pay road tax @repeat(1y) >2021-10-11
* do yearly service @repeat(1y) >2022-02-01
...
(Note: This example uses my related Repeat Extensions plugin to give more flexibility than the built-in repeats.)
The plugin tries to be as flexible as possible about where project metadata can go. It looks in order for:
If these can't be found, then the plugin creates a new line after the title, or if the note has frontmatter, a 'metadata:' line in the frontmatter.
The first hashtag in the note defines its type, so as well as #project, #area you could have a #goal or whatever makes most sense for you.
Other notes:
#paused tag to the metadata line, then that stops that note from being included in active reviews, but can show up in the lists.@reviewed(2021-06-25) rather than @reviewed/2021-06-25. The answer is that while the latter form is displayed in a neater way in the sidebar, the date part isn't available in the NotePlan API as the part after the slash is not a valid @tag as it doesn't contain an alphabetic character.The next major release of the plugin will make it possible to migrate all this metadata to the Frontmatter block that has become properly supported since NotePlan 3.16.3.
There are 2 parts of this:
#project, #area, #goal), then it will include just those notes which also have one or more of those tags. If this setting is empty, then it will include all notes for review that include a @review(...) string.Summaries, Reviews, Saved Searches. Any sub-folders of these will also be ignored. (Note that the special Templates, Archive and Trash are always excluded.)When you have configured the plugin, and added suitable metadata to notes, you're then ready to use some or all of the following commands:
This shows a list of project notes, including basic tasks statistics and time until next review, and time until the project is due to complete. Tip: As you can see in the linked videos above, place this list next to your main NotePlan window, and you can click on each project title in the table, and it will open in the main window ready to review and update.
You can set the 'Output style to use'. This is either a 'Rich' (HTML, shown above) or original 'Markdown' (normal NotePlan) output style:

In a project/area note you can, if you wish, include a one-line summary of your view on its current overall progress. If given, the latest one is shown in the project lists. To continue the example above, here's the start of the note a few weeks later, showing I think it's only 10% complete:
# Secret Undertaking
#project @review(1w) @reviewed(2021-05-20) @start(2021-04-05) @due(2021-11-30)
Aim: Do this amazing secret thing
Progress: 10@2021-05-20: Tracked down 007 and got him on the case
Progress: 0@2021-04-05: Project started with a briefing from M about SPECTRE's dastardly plan
## Details
* [x] track 007 down
* [x] Get briefing from 'M' at HQ
* [x] task 'Q' with building a personal jetpack (with USB ports)
* [x] set up team Deliveroo account
* [ ] arrange for 007's parking tickets to be paid
...
The starting percentage number doesn't have to be given; if it's not it is calculated from the % of open and completed tasks found in the note. From v1.2. there are new settings that affect which open tasks/checklists are included:
Project which would match for Client A/Projects as well as Client B/Projects. Note also:
/ this only includes the root folder itself, and not all its sub-folders./ this only ignores the root folder, and not all sub-folders.Each command is described in turn. If you have a Rich style project list open, the list will be automatically updated after most of them.
This kicks off the most overdue review by opening that project's note in the editor. When you have finished the review run one of the next two commands ...
This updates the current open project's @reviewed(date), and if a Rich style project list is open, it is refreshed.
If the 'Next action tag(s)' setting is set, then it will warn if it finds no example of those tags on all open tasks/checklists.
This updates this project's @reviewed(date), and jumps to the next project to review. If there are none left ready for review it will show a congratulations message.
This overrides (or skips) the normal review interval for a project, by adding a @nextReview(...) date of your choosing to the current project note. It also jumps to the next project to review. The next time "finish review" command is used on the project note, the @nextReview(date) is removed.
This adds a @completed(date) to the metadata line of the open project note, adds its details to a yearly note in Summaries folder (if the folder exists), and removes the project/area from the review list. It also offers to move it to NotePlan's separate Archive folder (or alternative folder you set in the settings).
This adds a @cancelled(date) to the metadata line of the open project note, adds its details to a yearly note in Summaries folder (if the folder exists), and removes the project/area from the review list. It also offers to move it to NotePlan's separate Archive folder (or alternative folder you set in the settings).
This is a toggle that adds or removes a #paused tag to the metadata line of the open project note. When paused it stops the note being offered with '/next review'. However, it keeps showing it in the review list, so you don't forget about it entirely.
If the 'Remove due dates when pausing a project?' setting is set, then all open tasks and checklists with a >date will have that date removed.
This prompts for a short description of latest progress (as short text string) and current % complete (number). This is inserted into the metadata area of the current project note as:
Progress: <num>@YYYY-MM-DD: <short description>
It will also update the project's @reviewed(date).
Part of the "Getting Things Done" methodology is to be clear what your 'next action' is. If you want to put a standard tag on such actionable tasks/checklists -- e.g. #next or #na, and put that in the settings, then in the project lists this next action will be shown after the progress summary. In fact you can set several different 'next action' tags, and the first of each will be shown in the progress summary. I use this to distinguish the things I can do (#na) from things I'm waiting on others to do (#waiting).
The Dashboard Plugin has the ability to set up Sections for tags/mentions, that show all open tasks/checklists with those tags/mentions. This is a different way to see all such 'next actions'.
Alternatively, you could use the "/searchOpenTasks" command (from the Search Extensions plugin) with search term #next to sync all your open #next tasks to your #next Search Results note. You can then use this as the source to drag'n'drop tasks into daily/weekly/monthly notes.
Another approach comes from user George C:
A good way to quickly create a new Project or Area note is to use the /np:new (new note from template) or /np:qtn (Quick template note) command from the Templating plugin. Here is what I use as my New Project Template:
---
title: Create a new Project note
type: template, quick-note, empty-note, project-note
folder: <select>
---
# <%- prompt('noteTitle', 'Project name') %>
#project @start(<%- promptDate('startDate', 'Enter start date') %>) @due(<%- promptDate('dueDate', 'Enter due date') %>) @review(<%- promptDateInterval('question', 'Enter review interval') %>)
Aim: <%- prompt('aim') %>
Context: <%- prompt('context') %>
My separate Dashboard plugin shows a simpler version of the data from the Projects Review List in its 'Projects' section. It has the same type of edit dialog to complete/cancel/finish review/skip review, and also shows progress indicators.
These commands require configuration before they will know how you intend to use projects and reviews. On macOS this is done by clicking the gear button on the 'Summaries' line in the Plugin Preferences panel. On iOS/iPadOS run the '/Projects: update plugin settings' command instead.
Most of these commands can be run from an x-callback call:
noteplan://x-callback-url/runPlugin?pluginID=jgclark.Reviews&command=project%20lists
The command parameter is the command name (as above), but needs to be 'percent encoded' (i.e. with any spaces changed to %20).
If you wish to override your current settings for this call, add &arg0= followed by a JSON version of the keys and values e.g.
arg0={"foldersToInclude":["CCC Projects"],"displayDates":true,"displayProgress":false,"displayGroupedByFolder":false,"displayOrder":"title"}
that then needs to be URL encoded e.g.
arg0=%7B%22foldersToInclude%22%3A%5B%22CCC%20Projects%22%5D%2C%22displayDates%22%3Atrue%2C%22displayProgress%22%3Afalse%2C%22displayGroupedByFolder%22%3Afalse%2C%22displayOrder%22%3A%22title%22%7D
The name of the settings are taken from the keys from the plugin's plugin.json file, which are mostly the names shown in the settings dialog without spaces.
Particular thanks to George C, 'John1' and David W for their suggestions and beta testing.
There is what I consider to be a bug in the NotePlan API that means most of these commands can only update a project note if it is open in the main Editor, not in a separate window, or the non-leftmost split window.
If you find an issue with this plugin, or would like to suggest new features for it, please raise an 'Issue' of a Bug or Feature Request.
I'm not part of the NotePlan team, but I've spent at least 3.5 working weeks on this particular plugin. If you would like to support my late-night hobby extending NotePlan through writing these plugins, you can through
Thanks!
Please see the CHANGELOG.