How we use Discourse as a superior ..... management tool

This post is in reply to @sam’s question, but I think it merits a new topic.

I’m the co-founder of an industrial robotics consultancy & training startup from Holland.

In many cases, we are flown in once proverbial sh*t has hit some industrial fan.

Once we’ve cleaned stuff up, we train clients to make sure no more fans are hit in that particular location. (As contradictory as it seems, this business model actually works very well. But that for another topic.)

We really had to set up a system to make collaboration and task management much more efficient to be able to scale our output (we’re very picky about hiring new people).

Our first reflex was to look for a project/task/issue management tool.

After looking for a solution (including Todoist) and already having considered Jira (which I personally hate am not fond of), we realized we did not understand our problem:

What we actually needed was a collaboration platform.

We had already become very enthousiastic about Discourse through prior experiences with its forum functionalities, so your beautiful piece of software was the first place we looked.

In order for Discourse to be a viable platform, we needed a few main ingredients in addition to its collaboration functionality:

  • Structuring information into projects and tasks with associated user permissions
  • Project and task tracking
  • Assigning the responsibility of (1) projects and (2) tasks to individuals (those two are not the same!)

Hierarchy and permissions are both handled through categories, so that’s actually a pretty neat match for us in Discourse.

Basically our home page looks like this (this is a fragment; project names hidden):

Structuring projects and tasks

We’ve adopted a variant of Apple’s Directly Responsible Individual (DRI) system:

  • Each DRI (top-level category) is assigned projects (second-level category) the outcome of which they’re responsible for.
  • Topics in these categories represent tasks, and can be assigned to any staff member. We use the Assign plugin for this. However, the DRI remains responsible for its outcome.

We’ve found that this system - which pretty naturally maps to Discourse’s two-tiered category hierarchy - works awesome. It really cuts required communication in half because it’s so incredibly transparent and clear.

Fine-grained permission control is achieved by setting permissions on the sub-categories.

Assignment and tracking

Assignment and tracking is achieved by using the Discourse Assign plugin, the Topic Status filter plugin, tagging and some some smart URL param filtering with custom links in the header:


Your to do’s

The brilliant Discourse Assign plugin assigns tasks to staff.

Tasks assigned to the current user are visible under the Tasks link (/latest?assigned=me&status=open). Finishing a task means closing the topic. It will then disappear from the list.

Note: it would be great if we could assign tasks to users who are non-Admin/Moderator users. For us it’s a bit unfortunate that we have to make someone a moderator to be able to assign them tasks).


At the start of the week we will set priorities for the week (due:this-week). At the start of the day we will set priorities for the day (due:today).

These are available through the Due link in the header (url: /latest?assigned=me&tags=due:today+due:this-week)

Request for comments

When I need Tim’s input on a task which is actually assigned to me, I will tag him with a waiting-for:tim tag.

The entire waiting-for: list is available through the Due link in the header (url: /tags/).

Selecting an assignee

As-of-yet unassigned tasks are visible accessible through the Assign link (url: /latest?assigned=nobody&status=open).

Once tasks are assigned they’ll move to the employee’s Tasks list.


Through the

  • category page
  • header links

we are able to actually keep track of everything we have to do in an incredibly simple fashion.

Asynchronous collaboration now occurs naturally through Discourse’s superior features in that domain, coupled to a very functional structure which makes a distinction between DRI’s and assignees.

Further improvements

  • Time tracking We already know how to do this in a workable, simple fashion, just not implemented yet.
  • Pipelines/phasing/workflow Tagging and smart filtering. Looking for the best system to actually make this work.
  • Maybe we also want to implement some kind of dependency management (first task A, then task B) too, but we’ll only do that if we come up with a way to make that REALLY simple (the tools we use should reduce complexity, not increase it).

Suggestion for your roadmap, @sam

With little effort, you can actually convert Discourse into the best collaboration tool which also supports project/issue/task management.

Maybe slap another brand on it, whatever, but there’s a huuuuge market there. Keep in mind that many clients want an opiniated, pre-structured system which has the flexibility to bend a little bit to the idiosyncracies of their processes. I really think Discourse has the potential to actually combine those two seemingly contradictory requirements.


Some really excellent ideas here, which I’m going to put into practice next week!


Very inspirational review.

Glad to hear, I‘m not alone with this use-case and requirements. I’ve also an instance dedicated as knowledge base and management tool. Actually, most of the SaaS and self-hosted collaboration solutions are less capable and user-friendly than Discourse.

We definitely need more of these guides. :slight_smile:

Disclaimer: My biggest concern since I‘m using Discourse are …

  • the handling of attachments. I‘ve lost hundreds of them for no known reason. Now, I’m trying to link documents via Nextcloud. But this didn’t recover a lot of images…

  • tiny, but pretty relevant syntax changes. For example: I love to work with markdown titles for a better structure. About a year ago, we could write #mytitle to get a heading. Nowadays, we need to add a space between # mynewtitle, to get a heading. Most of the issues could be fixed with a rake task except those with multiple citation levels.

The devil is in the details


Wow, thanks so much for the write up! This is super helpful.

We currently have the assign public site setting that goes some of the way. That said there are questions I have.

Say we add allow staff to assign to anyone, are people who get the task assignment allowed to somehow say I am “done” and unassign from self?

Can you think through your ideal mechanics here and I will get this slotted as a change to the assign plugin, post it by itself in #plugin:assign category so we do not lose it here.

I think some sort of theme component for time tracking could be very useful to certain people. Curious about what mechanics you are after?

Agree again this is interesting, but I share the fears about complexity here. Maybe some sort of advanced EXTRA dialog for “delayed assigns” makes sense.

Assign topic X to Jane, after topic Y is closed.
Assign topic X to Jane, in Feb.

Then we can carry a notice at the bottom of the topic like we do for timers.

Yes this is a very interesting idea, there are also plugins we have that only make sense when you are using Discourse for internal collaboration such as discourse policy and calendar. At the moment we are pricing ourselves really high here to get access to these plugins cause you have to be on the enterprise tier to even consider it.

This is something very unfortunate that happened due to changes we made in 2015 that amended upload formats.

We are adding a lot of checks and balances at the moment to ensure this can not happen. The big missing piece we have is an “automatic broken upload detector” that we will be running regularly. If you have posts with broken uploads we will alert admins.

Another mitigation you can make on small communities is simply to disable all deletion from tombstone and make it a manual process.

On the upside this is not going to be an issue going forward, we adhere to a standard now per: this standard is not changing much anymore.


No, the requestor is the one who has to confirm receipt of the completed task, surely? Acceptance has to be the final stage and close the loop, at least for any projects I’m involved in.

It would definitely be useful to track estimated versus actual, particularly if a piece of work is going to be re-used.

We’re going to need to see the whole critical path for this to make sense, both for the whole project and for individual resources, otherwise it’s impossible to carry out any kind of impact assessment.


This would require some kind of web-based overview with all of the attachments as we discussed some time ago.

The current way and folder structure is very unpleasant. It would be much easier to have user-specific sub-folders with year, month and day to quickly identify the files…

Edit: Do you know Daisy Disk? This UI for Discourse would be a real killer feature with file size check and post dependencies …