06 · Projects
The Projects module is a delivery tracker for work that's bigger than a single ticket — onboardings, migrations, snag lists, internal initiatives. It carries tasks, typed checklists, time tracking, vendor links, and a push to InvoiceNinja for billable work.
Where to find it
Sidebar → Projects or /projects. Requires the projects feature.
The Projects sidebar group has: All projects, New project, Calendar, and (for admins) Project types and Task templates.
Concepts
- Project type — categorises a project and owns an auto-numbered
code counter (
SNAG-001,ONBOARD-014, …). Configured by admins under Admin → Project types. - Project — a single piece of work. Has a code, name, optional customer and contact, status, priority, schedule, lead engineer, estimates, and a billable flag.
- Task — a work item inside a project. Has a title, rich-text description, an engineer, a complete/not-complete state, a checklist, and time entries.
- Checklist — a typed list of items on a task (not on the project). Each item is a checkbox, yes/no, text, rich text, number, or date.
- Task template — a saved task shape (default title, description, and checklist) you can apply when adding a task to any project.
The project list
/projects groups projects under their project type, each group
showing a colour dot and the type code.
+------------------------------------------------------------------+
| Projects. [+ New project] |
|------------------------------------------------------------------|
| 🔍 Search tasks across all projects… |
| [All 12] [Planned 3] [In progress 5] [On hold 1] [Finished 2] |
| [Cancelled 1] [⚠ Overdue 2] |
|------------------------------------------------------------------|
| ● SNAG — Snagging 4 projects |
| SNAG-014 Server move — Acme Acme Ltd HIGH In progress … |
| SNAG-013 Office relocation Acme Ltd MED Finished … |
+------------------------------------------------------------------+
📷 Screenshot placeholder: screenshots/projects-list.png
- Filter chips filter the list by status, plus an Overdue chip (due date passed and the project is still live). Each chip shows a live count; empty chips are disabled.
- Task search searches task titles and descriptions across every project — results deep-link to the task.
- The Time column shows logged vs estimated minutes; it turns red when a project is over its time estimate.
- The Due column turns red with a ⚠ when the project is overdue.
Project detail
The detail page (/projects/{id}) is a single scrolling page of cards —
there are no tabs.
+------------------------------------------------------------------+
| SNAG-014 Server move — Acme [← All projects][Edit] |
| [In progress] [HIGH] [Billable] |
|------------------------------------------------------------------|
| Description (rich text) | Customer · Contact · Time logged |
| Internal notes | Estimated cost · Start · Due |
| | Lead engineer · Engineers |
| Status [In progress ▾]|
+------------------------------------------------------------------+
| Billing · Vendors · Attachments · Linked tickets · Tasks |
+------------------------------------------------------------------+
📷 Screenshot placeholder: screenshots/project-detail.png
The cards, top to bottom:
- Header / overview — status & priority badges, description, internal notes, customer/contact links, time logged vs estimate, cost, dates, engineers, and a status dropdown.
- Billing — push the project to InvoiceNinja (see below).
- Vendors — link
VENDOR-role users to the project. - Attachments — files attached to the project.
- Linked tickets — helpdesk tickets whose Project field points here.
- Tasks — the task list with inline checklists and time logging.
Creating a project
- Click + New project.
- Either pick a type (the code is auto-assigned, e.g.
SNAG-015) or leave the type as Manual ID and type a code yourself. - Enter the name, and optionally a customer and/or contact.
- Set status, priority, time/cost estimates, start/due dates, the lead engineer, and assignees.
- Tick Billable if the work should be invoiceable.
- Add a description (rich text) and internal notes.
- Save.
⚠️ Caution. Project codes are monotonic per type. Deleting
SNAG-014 does not free up its number — the next project still gets
SNAG-015 from the counter. This is by design so a code shared with a
customer always resolves to the same project.
Status & locking
A project moves through Planned → In progress → On hold → Finished → Cancelled. Setting it to Finished stamps a finish time; re-opening clears it.
A Finished or Cancelled project is locked — its tasks, checklists, and time entries become read-only and the project cannot be deleted. Re-open it (set any other status) to edit again.
Tasks
Tasks live under a project, in the Tasks card. Add one with + Add task (free-form) or + from template… (seeds the title, description, and checklist from a task template).
| Field | Notes |
|---|---|
| Title | required; edit inline |
| Description | rich text — acceptance criteria, links |
| Engineer | a user; defaults to the project's lead engineer |
| Complete | a checkbox — tasks are complete or not complete |
| Checklist | typed sub-items (see below) |
| Time entries | minutes logged against the task |
Tasks don't have their own status enum, priority, or due date — those
live at the project level. Completion is a simple checkbox, and the
Tasks card header shows the complete / total count.
Checklists
Every task has a checklist. Each item has a type:
| Type | Behaviour |
|---|---|
| Checkbox | plain tick-off |
| Yes / No | explicit boolean choice |
| Text | single-line answer |
| Rich text | formatted notes |
| Number | numeric answer |
| Date | date answer |
Items can be marked required (shown with a *). Typed items
auto-complete once a value is entered.
Time tracking
Click + Log time on a task, enter minutes and a description. Time rolls up to the task and to the project. If a project exceeds its estimated minutes, the time figure is shown in red as over budget.
Billing
If a project has a customer linked and is marked Billable, the Billing card can push it to InvoiceNinja:
- Generate quote — needs a customer (billable not required).
- Generate invoice — needs a customer and the billable flag.
Line items are built from the project's tasks (one per billable task, using a per-task rate or the project estimate split evenly). The resulting invoice/quote reference is stored on the project. Requires InvoiceNinja to be configured under Admin → Integrations.
Vendors
The Vendors card links VENDOR-role users to a project so external
contractors get scoped access. Only admins can add or remove vendors;
the vendor then sees the project under their own
Vendors view.
Linked tickets
Helpdesk tickets carry an optional Project field. Set it on a ticket and the ticket appears in that project's Linked tickets card. The link is read-only on the project side — open the ticket to change it.
Calendar view
/calendar is the cross-project calendar showing project start and due
dates. Click any item to jump to the project.
Templates
A task template is a reusable task shape — a default title, a rich-text description, and a default checklist. It is not a multi-task project skeleton.
Apply one from the + from template… dropdown in a project's Tasks card. Manage them under Admin → Task templates.
Linking
Each project can link to:
- A customer and/or contact (CRM)
- A lead engineer and assignees (users)
VENDOR-role users (Vendors card)- Helpdesk tickets (via the ticket's Project field)
- Files (Attachments card)
The reverse link shows on the customer page's Projects section.
Permissions
| Action | Role |
|---|---|
| View projects | any user with projects |
| Create / edit projects & tasks | any user with projects |
| Delete a project | any user with projects (blocked while locked) |
| Add / remove vendors | admin |
| Manage types & templates | admin (pages are admin-gated) |
See also
- Helpdesk — tickets link to a project
- CRM — projects link to companies/contacts
- Admin → Project types & templates
- Vendors — external contractor access