Create work-index-dashboard.md via n8n
This commit is contained in:
parent
aa32454aef
commit
4072ee4ed0
152
Tech/Projects/work-index-dashboard.md
Normal file
152
Tech/Projects/work-index-dashboard.md
Normal file
@ -0,0 +1,152 @@
|
||||
---
|
||||
project: work-index-dashboard
|
||||
type: project-plan
|
||||
status: active
|
||||
path: Tech/Projects
|
||||
tags:
|
||||
- pbs
|
||||
- homelab
|
||||
- dashboard
|
||||
- mcp
|
||||
- trello
|
||||
- obsidian
|
||||
created: 2026-04-27
|
||||
updated: 2026-04-27
|
||||
---
|
||||
# Work-Index Dashboard
|
||||
|
||||
A queryable index over the vault, Trello, and (later) Claude Code session
|
||||
logs. Static HTML dashboard for daily use, MCP read/write API for agents to
|
||||
use the same data layer.
|
||||
|
||||
## Why
|
||||
|
||||
The vault is already unwieldy at ~20 files. Frontmatter is invisible in the
|
||||
default file list, sorting and filtering aren't possible, and nothing
|
||||
connects the vault to live project state in Trello or Claude Code sessions.
|
||||
The result: "what did I commit to next" can't be answered without opening
|
||||
multiple tools and reading individual files.
|
||||
|
||||
This project closes that gap with a single dashboard surface, joined on
|
||||
`project` slug across all three sources, plus an MCP server so agents can
|
||||
read and write through the same layer.
|
||||
|
||||
## Primary use case
|
||||
|
||||
**"What did I commit to next."** Open the dashboard at the start of a work
|
||||
session, see the current project list with active commitments, pick
|
||||
something up. Commitment tracker, not activity feed.
|
||||
|
||||
Secondary use cases (v2): "I'm lost, what was the last decision" and "what
|
||||
loose threads have I left in session notes that never made it to Trello."
|
||||
|
||||
## Architecture
|
||||
|
||||
Three-source join on project slug:
|
||||
|
||||
- **Vault** — frontmatter (`project`, `status`, `type`, `tags`, `created`,
|
||||
`updated`, `path`) read directly from `.md` files
|
||||
- **Trello** — single board, one label per project slug, cards as
|
||||
commitments
|
||||
- **Session notes** (v2) — markdown files under each project, written by
|
||||
Claude Code sessions
|
||||
|
||||
The data layer is plain Python. The dashboard renders it as HTML. The MCP
|
||||
server exposes it as tools. Same functions, three surfaces.
|
||||
|
||||
## Stack
|
||||
|
||||
- Python managed via `uv`
|
||||
- FastAPI (long-running process; MCP server eventually shares it)
|
||||
- Jinja2 templates
|
||||
- HTMX for interactions without a JS framework
|
||||
- Tailwind for styling
|
||||
- `py-trello` for Trello API (swap to `httpx` direct calls if it gets in
|
||||
the way)
|
||||
- `.env` for credentials
|
||||
- In-memory cache for Trello responses (~60s TTL) so refreshes feel instant
|
||||
|
||||
## Phasing
|
||||
|
||||
### v1 — dashboard
|
||||
|
||||
- Data layer: read vault frontmatter, read Trello cards by label
|
||||
- Dashboard view: current project list with status, last vault update, open
|
||||
Trello cards, links out to vault folder and Trello board
|
||||
- On-demand refresh (no cron, no event-driven)
|
||||
- Develop on bare metal on herbys-dev
|
||||
- Deploy to Docker behind Traefik for the v1 cutover
|
||||
|
||||
### v2 — session notes integration
|
||||
|
||||
- Extend data layer to read session notes from each project
|
||||
- Add "recent sessions" column to the project list
|
||||
- Add "loose threads" view: `- [ ]` checkboxes in session notes that have
|
||||
no matching Trello card
|
||||
- Add search across session notes for the "I'm lost" case
|
||||
|
||||
### v3 — MCP server
|
||||
|
||||
- Wrap the same data layer as MCP tools
|
||||
- Read tools: `get_projects`, `get_project_sessions`, `get_trello_cards`,
|
||||
`search_sessions`
|
||||
- Write tools: `log_session`, `update_project_status`, `create_vault_note`,
|
||||
`update_card_status`, `create_card`
|
||||
- stdio transport, local Claude Code only
|
||||
- Closes the loop: sessions write structured logs and Trello updates
|
||||
through MCP, dashboard reads the new state on next refresh
|
||||
|
||||
## Out of scope (v1)
|
||||
|
||||
- Graph visualization (revisit once queries are validated)
|
||||
- Live updates (websockets, file watchers)
|
||||
- Auth (homelab-internal, behind Traefik)
|
||||
- Write-back from the dashboard UI
|
||||
|
||||
## Tasks
|
||||
|
||||
### v1
|
||||
- [ ] Scaffold FastAPI project with uv
|
||||
- [ ] Implement vault frontmatter reader
|
||||
- [ ] Implement Trello client wrapper using py-trello, label-based filtering
|
||||
- [ ] Build join layer keyed on project slug
|
||||
- [ ] Build project list view with Jinja + Tailwind
|
||||
- [ ] Add HTMX-based refresh interaction
|
||||
- [ ] Add in-memory cache with TTL for Trello calls
|
||||
- [ ] Write Dockerfile
|
||||
- [ ] Add Traefik labels and deploy to herbys-dev
|
||||
|
||||
### v2
|
||||
- [ ] Extend data layer with session note reader
|
||||
- [ ] Add recent-sessions column to project list
|
||||
- [ ] Build loose-threads view (unfiled `- [ ]` items)
|
||||
- [ ] Add session search view
|
||||
|
||||
### v3
|
||||
- [ ] Scaffold MCP server alongside FastAPI app
|
||||
- [ ] Implement read tools wrapping the data layer
|
||||
- [ ] Implement write tools (vault, sessions, Trello)
|
||||
- [ ] Configure Claude Code to use the MCP server
|
||||
- [ ] Update CLAUDE.md conventions to call `log_session` at end of sessions
|
||||
|
||||
## Open questions
|
||||
|
||||
- Trello label naming — exact slug match, or prefixed (e.g.
|
||||
`proj:work-index-dashboard`)?
|
||||
- Where session notes live in each project repo —
|
||||
`docs/sessions/YYYY-MM-DD.md` vs. another convention
|
||||
- Dashboard hostname once Traefik routing is set up
|
||||
|
||||
## Success criteria
|
||||
|
||||
v1 ships when:
|
||||
- Dashboard loads in under a second on herbys-dev
|
||||
- It correctly shows every active project with its Trello commitments
|
||||
- It's used at the start of a work session at least three times in the
|
||||
first week
|
||||
|
||||
If it isn't opened, it isn't earning its keep, and the design is wrong
|
||||
before more layers get added on top.
|
||||
|
||||
|
||||
...sent from Jenny & Travis
|
||||
Loading…
Reference in New Issue
Block a user