VATEUD tasks and workflow application: user guide
by Svilen Vassilev
The essence (tl;dr)
The VATEUD tasks application is essentially a custom-built hybrid between a shared to-do
list and ticketing system, tailored for one particular purpose: workflow management and
collaboration both internally within VATEUD and externally between VATEUD and its vACCs
or other management bodies (VATEUR, BoG, etc).
The VATEUD tasks application is designed to achieve the following goals:
- Structuring, organizing and keeping track of all VATEUD related concrete activities
- Coordination and collaboration between VATEUD staff members on individual tasks & projects
- Accountability, responsibility, metrics and audit on all tasks assigned to VATEUD staff
either internally or by public users (vACC Staff, VATEUR or VATSIM staff)
- Statistics and breakdown of activities for individual VATEUD staff members; full history of
actions and involvement
- Ability for public users (vACC staff) to assign (delegate) tasks to VATEUD staff members and
follow up on these tasks' progress
- Ability to publicly receive data feeds (RSS) of all ongoing activities: new tasks, latest comments,
recently completed tasks
The day-to-day use of the tasks application will result in an environment where:
- each VATEUD staff member is fully aware of all the other staff member activities, their progress
and status, their estimated completion dates
- each VATEUD staff member can contribute and get involved on tasks that are not directly assigned to
them, provided their input and cooperation is necessary
- there is full accountability and comprehensive records associated with each task, created internally
or assigned externally to VATEUD, resulting in better efficiency, higher productivity and shorter
- vACC staff are given a window into all VATEUD operations and the ability to intervene, provide extra
input and feedback and directly influence VATEUD schedule and activities by creating and assigning new
- vACC staff are given a single "entry point" for anything they want to request from VATEUD. As far as
concrete, measurable tasks are concerned, this system supersedes traditional forms of communication,
such as email, instant messaging, forum private messaging, etc as it stimulates responsiveness and
guarantees no requests will get "lost in transit". It also allows other VATEUD staff members other than
the assignee to pick up the slack if required and see the assigned task through until its completion
- transparency and accountability are the new defaults and they elevate the relation between VATEUD and vACC
staff to a service based link between a service-provider and customer and that connection goes
both ways. VATEUD provides service and is accountable to vACCs just as much as vACC as vACC are responsible
for their performance, availability and activity. This openness, mutual understanding and shared agenda
encourages VATEUD and vACC to work as partners on achieving common goals and managing the available
Domain and access
- The application resides at tasks.vateud.net
- RSS feeds are available at tasks.vateud.net and require no accounts or
- For accessing the interface and for posting new tasks a sign-up is required. The registration form
is publicly open, however newly created accounts require manual review and activation by an admin.
Email notification will be sent to the user when their account has been enabled.
Account creation and task delegation is allowed for all vACC staff on the discretion of the vACC director.
Much like with the forums, the application admins won't refuse an account for an active vACC staff member,
if that's in agreement with the vACC director.
Staff accounts are provided to all VATEUD staff members (mandatory) and to any VATEUR or BoG staff member
(optionally upon request).
Account deletion and credentials storage
- Accounts may be disabled for users vacating their VATEUD or vACC staff positions. This will prevent the
user logging into the application. However no user records are ever deleted and all data and activity
associated with those records is retained indefinitely.
- Passwords are stored as a random-salted SHA1 hash. No sensitive data is stored in plain text. Password
reset tool is provided, associated with the registered email address.
In its current implementation the app has 4 levels of access with the following permission sets:
- Public: can access the RSS feeds. Can access the sign-up and sign-in forms.
- User: everything in 1. plus: can login and use the app interface, can create and delegate new tasks,
can use the comments system without limitations
- Staff: everything in 2. plus: can view private tasks and comments, can be assigned to tasks,
has full authority and editing permissions over their accepted tasks
- Admin: everything in 3. plus: can edit or delete any task; can enable or disable user accounts;
can promote and demote users from staff position
All times recorded and displayed by the application use the zero meridian (zulu) time!
As this application supersedes previous experiments and collaboration attempts based on other platforms
and solutions, it has been intentionally designed with maximum simplicity and usability and minimum
learning curve. Hence the number of concepts and amount of logic involved are limited to the practical
minimums. As a single-purpose application it lacks versatility and customization options, but is (hopefully)
concise and powerful in serving the objectives it was designed to handle.
The entire application revolves and is centered around the concept of a task: each item created is a task
and tasks can be assigned (delegated) to staff members, edited, managed and organized in a hierarchy. More
complex concepts such as projects have been avoided in a favour of a flexible, tree-like structure of
The nested tree design
If we think about what a project is: it's nothing but a task, composed of multiple subtasks, each of which
has - in turn - its own subtasks. The VATEUD tasks app replicates this concept by allowing nesting of tasks
in a tree-like hierarchy: each task can have an arbitrary number of "children" tasks (or "subtasks"), each
of them can in turn, have their own "children" or "branches" and this hierarchy can reach as deep as needed,
there are no imposed limitations. Hence complex tasks can have a complex tree of descendants below them if
necessary. The app interface for browsing those trees is very visual and intuitive, borrowing from the familiar
old computer file browsers:
The mini arrows on the left of each task allow to easily expand and collapse the branches and the icons for
each task use a familiar analogy: tasks marked with a folder icon suggest that there is nested content (subtasks)
below that task, while the tasks marked with a standalone sheet of paper indicate no descendants.
Each task has the following properties:
- name: a short descriptive task name
- author: the name of the user, creating the task (recorded automatically)
- due date: by default is set 1 week ahead, but can be overridden by any future value
- assignees: any number of EUD/EUR staff members, selectable by name
- description: the actual description of the task, supports rich text formatting
- private: a private flag, see the "Private Tasks" section below
- status: the current status of the task, see "Task statuses" section below
- creation date/time: recorded automatically
Each task goes through several different statuses within its life-cycle. The possible task statuses are:
- New: the default for each newly created task
- Accepted: the task has been reviewed and acknowledged by its assignee(s)
- In progress: the task is being worked on
- Halted: the task has been temporarily paused by the assignee(s)
- Completed: self explanatory
- Cancelled: self explanatory
Task statuses can be manipulated by the task assignee(s) following a logical pattern, i.e. a "new" task
can only be marked as "accepted" or "cancelled", a task can only be marked as "halted" if it was previously
"in progress" and so on.
For each status change, notification emails are sent to the task's author if the author is not among the
Upon creation or editing, a task can be flagged as private. This means it will only be visible to user with
staff-level accounts (EUD/EUR) and will not be available for public users:
Private tasks are marked with an "eye" symbol inside the tasks tree for easy identification:
Even though we default to openness and transparency, there might be cases when sensitive issues are being dealt
with: DCRM topics, rating downgrades, CERT issues, other disputes, etc. The option is here to "draw the curtains"
over certain tasks and their associated comments, however use it on discretion and with common sense and only when
Active and archived tasks
The app interface distinguishes between active and archived tasks.
- Active tasks: with a status of "new", "accepted", "in progress" or "halted"
- Archived tasks: with a status of "completed" or "cancelled"
Each task supports an arbitrary number of attachments: these can be any type of files, relevant to the task:
external documents, diagrams, images, etc. Attachments can be uploaded by the task's author while the task
is still "new", or later on by the task assignee(s). Attachments can be edited or deleted if necessary.
Comments can be posted below each task as a way of communication between the task author and the assignee(s).
The comments system can be used by the task authors as a means of following up with the task, providing
additional input, clarification, etc. Comments system is open to everybody, meaning that public-level accounts
and non-assignees can also comment on any task (as long as it's not private.) Just like the task descriptions,
comments support rich text formatting and can be edited or deleted by their authors if needed. Mini buttons
positioned to the right of the comments details can be clicked to trigger the edit or delete actions:
Each write action into the database is logged and displayed for reference and workflow awareness. The actions
logged include: task and comments creation, updates or deletion, user account manipulation, etc. For each
such change, the captured data includes:
- the user executing the change
- the date and time of the change
- the type of change (create, update, delete)
- the old value
- the new value
The diff sets for each change (or record version) are stored in the database in a serialized object notation and
the histories are displayed in reverse chronological order:
- on each individual task page (scoped for the particular task)
- on each individual user profile (scoped for the particular user)
Currently the changesets are displayed in their raw (and probably somewhat cryptic) json format, but more advanced
and user friendly parsing might be implemented later on if there's sufficient demand for it.
The user interface
The log in screen
All parts of the application, apart from the RSS feeds in the footer and the help section, require authentication.
Hence the log-in screen is the first thing the visitor sees. The sign-up link should be used for new registrations
and the password reset form is available for emergencies.
Active tasks screen
The tasks list
The Active tasks screen shows a paginated tree-list of all currently active tasks.
This list contains the following elements:
- tree icons and navigation controls: tasks that have no descendants are indicated with a "sheet" icon,
tasks containing nested tasks (children) are indicated by a "folder" icon. The mini-arrows in front of those
icons are clickable and allow collapsing and folding of the nested branches
- task name: the task name is automatically trimmed to a certain length in this view, to avoid breaking the
layout. It's also clickable and points to the task's details page
- task status: the different statuses are color coded for easier visual identification
- private flag: private tasks are denoted by the "eye" symbol
- due date: due dates are also color coded. They are black by default, but if a due date is less than a week
in the future, then it's displayed in yellow and if the task is overdue (due date in the past), then it's shown
- assignees: the names of the task's assignee(s), also trimmed to a certain length to avoid over-stretching
- actions mini-buttons: shortcuts to the available actions for the particular task. The number and type of these
buttons depends on the affiliation of the user viewing the page to the task in question, and also to some extent -
on the user's rank. For example the "show" action is available to all users and all tasks, however the "accept"
action is only available to assignees of the task and only while the task status is "new". The types of actions
and their availability is described in detail in the "Task actions" section below. All the mini-buttons here
display an explanatory tooltip on hover.
Sorting & Column headers
By default the list of tasks is sorted in reverse chronological order with the recently created or updated
tasks being shown on top.
The headers of most columns in the list are clickable to allow sorting of the entire list by the selected column.
Thus for example clicking on the "Name" label will sort all tasks in ascending alphabetical order. A mini-arrow will
appear next to the label to indicate the chosen sorting and its direction:
Clicking again on the sane label, in our example it's the "Name", will reverse the sorting order, so all tasks will
be sorted in descending alphabetical order, also indicated by the reversed direction of the mini-arrow:
Searching / filtering
The number of tasks displayed may be reduced by using a search (or filter). The filter button is on the top right
of the page, next to the title:
The button will trigger a modal dialog with the following available search fields:
- Name contains...
- Status is...
- Description contains...
- Assignee(s) names contain...
- Comments contain...
Combined searches are supported meaning tasks can be matched based on a single criteria or a combination.
My tasks screen
The My tasks screen has the same logic and elements like the "All tasks" screen. The only difference being
that here the tasks displayed are scoped through the user accessing the page in the following manner:
- for staff-level accounts the "My tasks" page displays the list of tasks that the user is assigned to (is assignee).
- for public-level accounts the "My tasks" page displays the list of tasks that the use has created (is author).
This difference is consequential to the fact that public-level accounts can create (delegate) tasks, but cannot
be assigned to tasks (can't be assignees). For public users this is also a convenient overview to keep track on the
tasks they've created and assigned and of their progress.
One more difference here is the "Switch to archived tasks" button:
When pressed in displays a view of all the archived (completed & cancelled) tasks, once again scoped via the user
as described above:
The archive screen follows the same layout and logic as described for the "Active tasks" screen, however it shows
a list of the already completed or cancelled tasks. Because of that you will notice that the actions available
for each task on the right (the mini-buttons) are also very limited.
New task screen
The "new task" form is straightforward: it requires filling-in the task's name, picking assignee(s) from the dropdown
menu (multiple assignees can be selected), picking a due date from the datepicker and entering the task description
(optional). The description field supports basic formatting and is enclosed in a simple WYSIWYG editor, much like
those familiar from forums and CMS apps. Notably the WYSIWYG editor supports the common keyboard shortcuts such as
Ctrl-B for bold, Ctrl-I for italic, etc.
Task details screen
Clicking the task name or the "Task Details" mini-button opens the task details page. It shows the following elements
(refer to the screenshot below):
- Primary task attributes: author, name, due date, assignees, creation date/time, status, private flag, parent task (if any)
- Formatted task description
- Tree-style listing of the active subtasks (if any)
- Tree-style listing of the archived subtasks (if any)
- Task action buttons
- Task attachments (if any)
- Comment entry field
- List of comments (if any)
- Task history
Several different types of actions are available for each task, based on the task's status, on the relation of the
logged user to the task and on the user's rank. These actions are accessible from the task's details page and
from the mini-buttons in the task listing pages. Here's a breakdown of all possibilities:
- Edit: available for task's author while the task is with "new" status. Thereafter, when status changes to
"accepted" and beyond, this is only available to the assignees. Always available to application admins.
- Upload attachment: available for task's author while the task is with "new status". Thereafter, when status changes to
"accepted" and beyond, this is only available to the assignees.
- Accept task: changes the task status to accepted. Only available to assignees for tasks with "new" status.
- Create subtask: available for task's author while the task is with "new status". Thereafter, when status changes to
"accepted" and beyond, this is only available to the assignees.
- Mark in progress: changes the task status to "in progress". Only available to assignees and for tasks with
a status of "accepted" or "halted"
- Mark halted: changes the task status to "halted". Only available to assignees for tasks marked as "in progress"
- Mark Completed: changes the task status to "completed". Only available to assignees
- Mark Cancelled: changes the task status to "cancelled". Available to authors while the task is still "new".
Thereafter only available to assignees.
- Delete task: only available to application admins. Non-reversible.
Any type of file can be uploaded as an attachment to a task either by the author while the task is still new, or
by the assignees thereafter. Attachments can be edited and deleted by the assignees:
The comments system is open to all account types on any task. Comments are listed in chronological order (oldest
on top, newest on bottom) and can be edited and deleted, but only by their respective author. Rich text formatting
Edit task screen
Editing a task is very much like creating a task: the form and layout is the same, however there are 2 extra fields:
- Parent task selector: allows nesting the task below another task
- Status dropdown: allows overriding of the current task status
The comments page gives a paginated list of all comments in reverse chronological order (newest on top). Useful
for a quick overview and locating of all recent discussions that have taken place.
Contains the following columns:
- User (comment author, links to the user's profile)
- Date and time (of posting the comment)
- Private flag (if the related task is marked as private)
- Task name (links to the related task's details page)
- Comment text (trimmed to a certain length to fit on the page)
- Actions (mini buttons): for showing the comment, editing or deleting it (when applicable)
2 types of user lists are available via the User menu:
- Staff list: all application users with staff-level accounts
- Public Users list: all non-staff app users
These lists share common layout and information:
- User's name (linked to user's profile), email and status
- Basic statistics: assigned, active, created, completed and cancelled tasks
- Total number of sign-ins and date of last sign-in
- Actions (mini-buttons): available to admins
Clicking on a user's name from any page brings up the user's profile. It gives the basic details for that
user: name, email, vatsim id, vacc, staff position, etc and it also give a listing of this person's active
tasks and the recent actions history. A button in the top right allows switching the view to show that person's
archived (completed & cancelled) tasks.
Several actions are available to admins for each user via the mini-buttons on the right (tooltips on hover):
- enable or disable user account
- promote or demote from staff
Email notifications are automatically sent to users in the following situations:
- Newly signed users receive a notification when their account has been enabled
- Assignees receive an email whenever they're assigned to a task (unless the author of the task is also an
assignee: in thac case he won't receive an email, as the presumption is he's already aware of the assignment)
- Assignees receive an email whenever a new comment is posted to a task they're assigned to
- Task authors receive an email whenever the task status changes (unless the author is also among the task
The difference between staff accounts and public accounts
Staff accounts and public user accounts share mostly the same functionality with the following exceptions:
- Staff accounts can see private tasks and their related comments; public accounts can't
- On the "My tasks" page staff accounts see the tasks they have been assigned to and public
accounts see the tasks they have created
- Only staff accounts can be used as task assignees
An application admin has the following privileges:
- can enable and disable user accounts
- can promote or demote from staff
- can edit all tasks
- can permanently delete a task
The application provides 3 public RSS feeds, no account or authentication required:
- Newest tasks
- Recently completed tasks
- Latest comments
The links to these feeds are available in the app footer.