milad-s5413 downloadsPlan projects and tasks as Markdown notes, track time against them, and review it on a dashboard. Gregorian or Jalali (Shamsi/Persian) calendar.
Plan projects and tasks as ordinary Markdown notes, track time against them, and see where that time actually went. Works in the Gregorian or the Jalali (Shamsi/Persian) calendar.
Everything lives in your vault as plain notes with frontmatter. There is no database and no lock-in: delete the plugin and your projects and tasks are still readable files.
![]()
![]()
Kanban board and time tracking. Tasks as cards in status columns, drag to change status. Start a timer on a task, pause it when you get pulled away, stop it when you are done. Logged hours are the time actually worked — a pause does not bill lunch as work. The timer survives a crash or a restart: it is stored on every state change and restored on load, telling you how long it thinks it has been running so you can keep or discard it.
![]()
Dashboard. Three tabs:
Every period can be stepped backwards and forwards, so past months and years are reachable rather than everything being pinned to today.
![]()
![]()
Filters and focus mode. Narrow either board down by project — type part of a name or pick one from the list — by priority, or on the Kanban board by task title too. A Focus button on both boards drops everything but the active column; toggle it on either board and the other follows, since it is one shared switch rather than two.
Due dates. A calendar-aware date picker for tasks and projects — it draws in Gregorian or Jalali, whichever the calendar setting is, so a due date reads the same everywhere on the dashboard.
Archive. When a task or project reaches done, cancel or quite it moves into an archive folder together with its time entries. Closing a project takes its tasks with it. Reopening walks it back, except that a task which is done in its own right stays put. Archived items still appear in the board and every report — only the files move.
Workspaces. Separate sets of folders — work and personal, say — each with its own projects, tasks, time entries and archive.
Calendar. Gregorian or Jalali (Shamsi/Persian), with the week starting on whichever day you use. Month grouping, week boundaries, seasons and quarters, digits and labels all follow the choice.
Folders are created for you on first run. Everything about them is configurable in settings.
A task is a note with frontmatter and a Time Log table:
---
type: task
title: "Write the release notes"
project: "[[website-relaunch]]"
status: "active"
priority: "medium"
due: "2026-08-20"
total_hours: 3.5
days_count: 2
workspace: "[[Work]]"
---
# Write the release notes
## Time Log
| Date | Hours | Start | End |
|------|-------|-------|-----|
| 2026-08-18 | 2 | 2026-08-18T09:00:00.000Z | 2026-08-18T11:00:00.000Z |
Anything you write beyond that template is yours, and the board marks cards that carry notes so you can find them without opening each one.
| Command | What it does |
|---|---|
| Open Kanban Board | |
| Open Project Dashboard | |
| New Task / New Project | |
| Start Timer | on the active note, if it is a task |
| Pause / Resume Timer | |
| Stop Timer | logs the tracked time |
| Reset Timer | back to zero, still running, nothing logged |
| Discard Timer | throws it away |
| Toggle Focus Mode | active items only — shared between both boards |
| Tidy archive | moves closed items, restores reopened ones |
The plugin exposes a small versioned API so a companion plugin can create real tasks rather than reproducing the frontmatter format:
const pm = app.plugins.plugins["project-manager-with-time-tracking"]?.api;
if (pm?.version >= 1) {
const project = await pm.ensureProject(workspaceId, { title: "Website relaunch" });
await pm.createTask(workspaceId, {
title: "Write the release notes",
projectSlug: project.slug,
extra: { source_id: "abc-123" }, // your own id, for skipping duplicates later
});
}
listWorkspaces, listProjects, ensureProject, createTask and findTaskBy are available. findTaskBy(workspaceId, key, value) is how you tell whether you already imported something.
This project is offered for free so everyone can use it without restrictions. If you found this tool useful, you can support its continuous development and improvement through donations.
MIT — see LICENSE.