Project

Projects and tasks

MarketplacePeople and projectsVersion 0.2.0manifest

What it is for ​

Plan work as projects, milestones and tasks with assignees and deadlines. Progress is tracked by status, which keeps the model simple; it is a good fit for small teams that want a shared board rather than effort accounting.

What the package does and does not do ​

Projects, milestones and tasks with assignees, deadlines and status flows. Progress is tracked by status, not computed from task effort.

Models ​

projects_project ​

A body of work with a goal

Read group: projects.user. Write group: projects.manager.

FieldKindData classPersonal dataGroupAgents seeDescription
nametextnonenoprojects.userin clearProject name
codetextnonenoprojects.userin clearShort reference used in reports, for example WEB-24
project_managertextinternalyesprojects.usermaskedName of the person accountable for the project
start_ondatenonenoprojects.userin clearPlanned start date (YYYY-MM-DD)
deadlinedatenonenoprojects.userin clearDate the project must be finished (YYYY-MM-DD)
budgetmoneynonenoprojects.userin clearAgreed budget for the project (minor currency units, e.g. cents)
descriptionlongtextnonenoprojects.userin clearGoal and scope of the project
stateselect (planned, active, done)nonenoprojects.userin clearProject status: planned, active, done

projects_milestone ​

A checkpoint in a project

Read group: projects.user. Write group: projects.manager.

FieldKindData classPersonal dataGroupAgents seeDescription
project_idref → projects_projectnonenoprojects.userin clearThe project the milestone belongs to
nametextnonenoprojects.userin clearMilestone name, for example Design approved
due_ondatenonenoprojects.userin clearDate the milestone is due (YYYY-MM-DD)
descriptionlongtextnonenoprojects.userin clearWhat must be true for the milestone to count as reached
stateselect (pending, reached, missed)nonenoprojects.userin clearMilestone status: pending, reached, missed

projects_task ​

A unit of work inside a project

Read group: projects.user. Write group: projects.user.

FieldKindData classPersonal dataGroupAgents seeDescription
titletextnonenoprojects.userin clearWhat needs doing
project_idref → projects_projectnonenoprojects.userin clearThe project this task belongs to; empty for a private task
milestone_idref → projects_milestonenonenoprojects.userin clearThe milestone this task contributes to
assigneetextinternalyesprojects.usermaskedName of the person responsible
priorityselect (low, normal, high)nonenoprojects.userin clearHow important the task is: low, normal, high
due_ondatenonenoprojects.userin clearDate the task is due (YYYY-MM-DD)
estimate_minutesnumbernonenoprojects.userin clearPlanned effort in minutes
descriptionlongtextnonenoprojects.userin clearDetails, acceptance criteria and links
stateselect (todo, doing, done, cancelled)nonenoprojects.userin clearTask status: todo, doing, done, cancelled

Workflows ​

projects_project ​

ActionMovesWho may run itApproval
projects_project.startstate: planned → activeprojects.managerno
projects_project.finishstate: active → doneprojects.managerno
projects_project.reopenstate: done → activeprojects.managerno

projects_milestone ​

ActionMovesWho may run itApproval
projects_milestone.reachstate: pending → reachedprojects.managerno
projects_milestone.missstate: pending → missedprojects.managerno

projects_task ​

ActionMovesWho may run itApproval
projects_task.beginstate: todo → doingprojects.userno
projects_task.completestate: doing → doneprojects.userno
projects_task.cancelstate: todo → cancelledprojects.userno

Permission groups ​

Groups used by this app:

  • projects.manager
  • projects.user

Approval steps ​

No step in this app needs an approval, apart from deleting records.

What agents can and cannot do ​

An agent can read, search, create and update records of this app, and run the actions that need no approval, within the permission groups of its token.

It can only propose these steps, and a person must approve them: projects_project.delete, projects_milestone.delete, projects_task.delete.

Personal data is masked as placeholder tokens: projects_project.project_manager, projects_task.assignee.

Dependencies ​

None.

Install ​

Install it from the Customize app (Marketplace), or from the command line:

bash
obop modules install-from projects

Needs a database and administrator rights.

Build your own ​

The module guide shows how apps like this one are written