bluebeard632 downloadsTrack the projects you already keep as notes: grid, table and activity views, query blocks, automatic activity history and export to a portfolio.
An Obsidian plugin for the project notes you already keep. It finds your projects from the folders and frontmatter you already use, records what you work on automatically, and turns finished projects into portfolio drafts.
There is nothing new to maintain: no required fields, no log to write, no new folder layout.
Personal Projects/ <- projects folder (setting)
A-Level/ <- category folders (setting: category levels = 1)
BAnim.md <- a single-note project
Platform/
Ticket System/ <- a folder project...
Ticket System.md <- ...its folder note is the main note
Research/Competitors.md <- everything inside belongs to it
project tag is a project wherever it sits under the projects folder.Templates, Assets or Attachments are skipped (setting).Fields come from your existing frontmatter. Which key holds each field can be changed in settings:
| Field | Default key |
|---|---|
| status | status |
| summary | summary |
| repository | github |
| languages | languages |
| created | created |
| updated | updated |
Any other key (area, category, framework, ...) works in filters by its own name. Status values are your own words. You set their order in settings, and any value found in your notes that isn't in that list is added at the end.
The plugin watches the vault. When you create, edit, rename or delete a note inside a project, or change a project's status:, it records the day. History is stored in the plugin's own activity.json, never in your notes.
updated: kept current (setting, on by default): the first edit of the day to any note in a project sets the main note's updated: to today. It only does this if the note already has that field.Open it with the ribbon icon or Open projects dashboard.
You can filter by text, status and folder, or use the quick filters: not finished, worked on recently, stale, finished. You can also group by status, folder, area or category.
To change a status, click the status pill on a card or right-click a project. Only status: in the main note is changed. A folder project without its folder note asks before one is created.
Put these in any note, such as a weekly review or a daily note. They update live.
```projects
status: planning, in progress any listed value; any frontmatter key works
-area: A-Level leading - excludes
search: sql name, summary, languages
active: this-month only projects with activity in that range
sort: last-activity name | status | updated | created | last-activity | <key> (add "desc"/"asc")
group-by: status status | group | area | category | <key>
view: grid grid | table | list
limit: 10
```
```project-activity
range: this-week today | yesterday | this-week | last-week | this-month | last-month | this-year | 14d | 2026-10 | 2026-10-01..2026-10-17
area: Personal same filters as above narrow which projects show
view: list compact: one line per project per day
```
Hover a card in the dashboard for three buttons:
Research), creates the note inside the project and opens it. For a single-note project this first turns it into a folder project: Category/X.md moves to Category/X/X.md, and Obsidian updates the links.The commands Edit current project and New note in current project do the same for the note you have open.
{{name}}, {{date}}, {{status}} and {{summary}}.Right-clicking a project folder or note in the file explorer shows its status too.
Set Portfolio content folder to the portfolio's content/ folder: the one with Projects/, Writing/ and Assets/.
Export project to portfolio works for projects with a finished status. It writes Projects/<Name>.md as a draft that matches the site's Project fields:
| Portfolio field | Comes from |
|---|---|
title |
project name |
slug |
project name, slugified |
summary, updated |
the same fields |
stack |
languages, lowercased |
links.repo |
github |
year |
year of created |
status |
your status, mapped (setting) |
case |
next free number; a re-export keeps its number |
## sections to copy. Log, notes and research sections are off by default. Missing standard sections (Overview, The problem, What I built, Outcome) are stubbed in order.× and ·.Assets/.%% comments %% are removed.portfolio: <slug> is added to your project note.Draft monthly portfolio post builds Writing/YYYY-MM.md from that month's activity. It contains one section per project, plus status changes and new notes as hidden %% %% notes for you to rewrite. If the post exists, only projects it doesn't cover yet are appended, after a diff.
Committing and building the portfolio stay manual.
Everything is plain frontmatter, so Bases and Dataview can query the same notes if you want them to.
npm install
npm test # unit tests (Node 22+ runs the TypeScript directly)
npm run lint # the same ESLint rules Obsidian's review bot runs
npm run build # typecheck + bundle main.js
npm run demo # build and install into demo/, then open demo/ as a vault
OBSIDIAN_VAULT="D:/path/to/vault" npm run dev # watch and install into another vault
The demo/ vault has sample projects in your frontmatter shape, a seeded activity history, Reviews/Weekly review.md showing the code blocks, and a stand-in portfolio/content/ to export into.