# Ironpad — Implementation Checklist This checklist tracks **what is planned vs what is done**, based on the PRD. It is the authoritative execution status for the project. --- ## Phase 0 — Preparation ✅ (COMPLETED) ### Repository & Tooling - [x] Create project root structure - [x] Initialize Rust backend (`ironpad`, edition 2021) - [x] Add backend dependencies (Axum, Tokio, notify, git2, etc.) - [x] Verify backend builds (`cargo check`) ### Backend Scaffolding - [x] Create `routes/`, `services/`, `models/` modules - [x] Create placeholder files for all planned backend components - [x] Prepare WebSocket and file watcher modules ### Data Layer - [x] Create `data/` directory structure - [x] Create initial files (`index.md`, `inbox.md`) - [x] Initialize `data/` as its own Git repository ### Project Meta - [x] Create `ai-context.md` - [x] Create implementation checklist --- ## Phase 1 — MVP ✅ (COMPLETED) ### Backend Core - [x] Implement `main.rs` (Axum server bootstrap) - [x] Dynamic port selection (3000–3010) - [x] Auto-open system browser on startup - [x] Serve static frontend files (production path) ### Notes (CRUD) - [x] List notes from filesystem - [x] Read markdown file by ID - [x] Create new note with auto-generated frontmatter - [x] Update note with auto-save + timestamp update - [x] Archive note on delete (move to `data/archive/`) ### Frontmatter Automation - [x] Parse/serialize frontmatter - [x] Deterministic ID from path - [x] Auto-manage `created`/`updated` timestamps - [x] Preserve user-defined fields ### Frontend (Basic) - [x] Vue 3 + Vite setup - [x] Note list sidebar - [x] Note viewer/editor (textarea) - [x] Create/archive note actions - [x] Auto-save on edit --- ## Phase 2 — Core Daily Driver ✅ (COMPLETED) ### Real-Time Sync - [x] File system watching (`notify` crate) - [x] WebSocket server for real-time updates - [x] External edit detection + UI notifications - [x] Filter out own saves from notifications ### Search - [x] Full-text search (ripgrep with fallback) - [x] Search endpoint (`GET /api/search?q=`) - [x] UI search integration (Ctrl+K) ### Git Integration - [x] Git status endpoint - [x] Auto-commit (60-second batching) - [x] Manual commit button - [x] Git status indicator in UI ### Projects - [x] Project creation (folder + `index.md` + `assets/`) - [x] List projects API - [x] Project task file creation (`tasks.md`) ### Tasks (Basic) - [x] Task parsing from markdown checkboxes - [x] Tasks API (list all tasks) - [x] Task view in sidebar --- ## Phase 3 — Full PRD Compliance ✅ (COMPLETED) ### Projects & Tasks (Per PRD Section 7.2, 7.3) - [x] Project-specific task endpoint (`GET /api/projects/:id/tasks`) - [x] Task toggle endpoint (update checkbox state) - [x] Add task via UI (append to `tasks.md`) - [x] Task sections: Active, Completed, Backlog - [x] Project task view at `/projects/:id/tasks` route ### File Locking (Per PRD Section 7.7) - [x] Backend tracks open files via WebSocket - [x] File lock when Task View opens - [x] Editor shows "Read-Only" if file locked - [x] Auto-unlock when view closes ### Daily Notes (Per PRD Section 6) - [x] Create `data/daily/` directory - [x] Daily note endpoint (create/get today's note) - [x] Daily note templates - [x] Daily notes in sidebar ### CodeMirror 6 Editor (Per PRD Section 9.3) - [x] Install CodeMirror 6 dependencies - [x] Replace textarea with CodeMirror - [x] Markdown syntax highlighting - [x] Line numbers - [x] Keyboard shortcuts ### Markdown Preview (Per PRD Section 5) - [x] Split view (editor + preview) - [x] Markdown-it rendering - [x] CommonMark consistency ### Assets API (Per PRD Section 8) - [x] `POST /api/assets/upload` endpoint - [x] `GET /api/assets/:project/:file` endpoint - [x] Image upload UI in editor ### Git Advanced (Per PRD Section 7.5) - [x] Git conflict detection - [x] Conflict warning banner in UI - [x] `POST /api/git/push` endpoint - [x] `GET /api/git/conflicts` endpoint ### Frontend Architecture (Per PRD Section 14) - [x] Vue Router for navigation - [x] Pinia state management - [x] Separate view components (NotesView, TasksView, ProjectView) - [x] WebSocket composable --- ## Phase 4 — Enhanced Task System ✅ (COMPLETED) ### Dashboard - [x] Cross-project dashboard as home page (`/`) - [x] Project cards with active task counts and summaries - [x] Click-through to project or task detail - [x] Clickable "Ironpad" title navigates to dashboard ### Tags - [x] Tags field in task frontmatter (YAML sequence) - [x] Backend parses/writes tags on task CRUD - [x] Tag pills displayed on task list items - [x] Tag filter bar — click to filter tasks by tag - [x] Tag editor in task detail panel with autocomplete - [x] `projectTags` computed getter for all unique tags in project ### Subtasks - [x] `parent_id` field in task frontmatter - [x] Backend accepts `parent_id` on task creation - [x] Task list groups subtasks under parent (indented) - [x] Subtask count badge on parent tasks (completed/total) - [x] Subtask panel in task detail with inline add - [x] Subtasks clickable to view/edit ### Recurring Tasks - [x] `recurrence` and `recurrence_interval` fields in frontmatter - [x] Backend auto-creates next instance on recurring task completion - [x] Due date advanced by interval (daily/weekly/monthly/yearly) - [x] Recurrence picker (dropdown) in task detail panel - [x] Recurrence indicator on task list items ### Calendar View - [x] Month grid calendar at `/calendar` - [x] Tasks with due dates plotted on day cells - [x] Daily notes shown as blue dots - [x] Color-coded urgency (overdue/today/soon) - [x] Month navigation (prev/next) + Today button - [x] Click task → navigate to detail, click date → daily note - [x] Calendar link in sidebar navigation ### Due Date - [x] Inline date picker in task detail panel - [x] Clear due date button - [x] Due date display with color-coded urgency on task items --- ## Phase 5 — Polish - [ ] UI polish and animations - [ ] Responsive sidebar - [ ] Better error handling/messages - [ ] Loading states --- ## Phase 6 — Future / Optional - [ ] Global hotkey (Ctrl+Shift+Space) - [ ] System tray mode - [ ] Backlinks between notes - [ ] Graph view - [ ] Export (PDF / HTML) - [ ] Custom themes - [ ] Tantivy search (if >5000 notes) - [ ] Task dependencies (blocked by) - [ ] Time estimates on tasks - [ ] Calendar drag-and-drop rescheduling - [ ] Week/day calendar views --- ## Rules - No item is marked complete unless it is implemented and verified. - New features must be added to this checklist before implementation. - If it's not on this list, it's out of scope.