6.5 KiB
6.5 KiB
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
- Create project root structure
- Initialize Rust backend (
ironpad, edition 2021) - Add backend dependencies (Axum, Tokio, notify, git2, etc.)
- Verify backend builds (
cargo check)
Backend Scaffolding
- Create
routes/,services/,models/modules - Create placeholder files for all planned backend components
- Prepare WebSocket and file watcher modules
Data Layer
- Create
data/directory structure - Create initial files (
index.md,inbox.md) - Initialize
data/as its own Git repository
Project Meta
- Create
ai-context.md - Create implementation checklist
Phase 1 — MVP ✅ (COMPLETED)
Backend Core
- Implement
main.rs(Axum server bootstrap) - Dynamic port selection (3000–3010)
- Auto-open system browser on startup
- Serve static frontend files (production path)
Notes (CRUD)
- List notes from filesystem
- Read markdown file by ID
- Create new note with auto-generated frontmatter
- Update note with auto-save + timestamp update
- Archive note on delete (move to
data/archive/)
Frontmatter Automation
- Parse/serialize frontmatter
- Deterministic ID from path
- Auto-manage
created/updatedtimestamps - Preserve user-defined fields
Frontend (Basic)
- Vue 3 + Vite setup
- Note list sidebar
- Note viewer/editor (textarea)
- Create/archive note actions
- Auto-save on edit
Phase 2 — Core Daily Driver ✅ (COMPLETED)
Real-Time Sync
- File system watching (
notifycrate) - WebSocket server for real-time updates
- External edit detection + UI notifications
- Filter out own saves from notifications
Search
- Full-text search (ripgrep with fallback)
- Search endpoint (
GET /api/search?q=) - UI search integration (Ctrl+K)
Git Integration
- Git status endpoint
- Auto-commit (60-second batching)
- Manual commit button
- Git status indicator in UI
Projects
- Project creation (folder +
index.md+assets/) - List projects API
- Project task file creation (
tasks.md)
Tasks (Basic)
- Task parsing from markdown checkboxes
- Tasks API (list all tasks)
- Task view in sidebar
Phase 3 — Full PRD Compliance ✅ (COMPLETED)
Projects & Tasks (Per PRD Section 7.2, 7.3)
- Project-specific task endpoint (
GET /api/projects/:id/tasks) - Task toggle endpoint (update checkbox state)
- Add task via UI (append to
tasks.md) - Task sections: Active, Completed, Backlog
- Project task view at
/projects/:id/tasksroute
File Locking (Per PRD Section 7.7)
- Backend tracks open files via WebSocket
- File lock when Task View opens
- Editor shows "Read-Only" if file locked
- Auto-unlock when view closes
Daily Notes (Per PRD Section 6)
- Create
data/daily/directory - Daily note endpoint (create/get today's note)
- Daily note templates
- Daily notes in sidebar
CodeMirror 6 Editor (Per PRD Section 9.3)
- Install CodeMirror 6 dependencies
- Replace textarea with CodeMirror
- Markdown syntax highlighting
- Line numbers
- Keyboard shortcuts
Markdown Preview (Per PRD Section 5)
- Split view (editor + preview)
- Markdown-it rendering
- CommonMark consistency
Assets API (Per PRD Section 8)
POST /api/assets/uploadendpointGET /api/assets/:project/:fileendpoint- Image upload UI in editor
Git Advanced (Per PRD Section 7.5)
- Git conflict detection
- Conflict warning banner in UI
POST /api/git/pushendpointGET /api/git/conflictsendpoint
Frontend Architecture (Per PRD Section 14)
- Vue Router for navigation
- Pinia state management
- Separate view components (NotesView, TasksView, ProjectView)
- WebSocket composable
Phase 4 — Enhanced Task System ✅ (COMPLETED)
Dashboard
- Cross-project dashboard as home page (
/) - Project cards with active task counts and summaries
- Click-through to project or task detail
- Clickable "Ironpad" title navigates to dashboard
Tags
- Tags field in task frontmatter (YAML sequence)
- Backend parses/writes tags on task CRUD
- Tag pills displayed on task list items
- Tag filter bar — click to filter tasks by tag
- Tag editor in task detail panel with autocomplete
projectTagscomputed getter for all unique tags in project
Subtasks
parent_idfield in task frontmatter- Backend accepts
parent_idon task creation - Task list groups subtasks under parent (indented)
- Subtask count badge on parent tasks (completed/total)
- Subtask panel in task detail with inline add
- Subtasks clickable to view/edit
Recurring Tasks
recurrenceandrecurrence_intervalfields in frontmatter- Backend auto-creates next instance on recurring task completion
- Due date advanced by interval (daily/weekly/monthly/yearly)
- Recurrence picker (dropdown) in task detail panel
- Recurrence indicator on task list items
Calendar View
- Month grid calendar at
/calendar - Tasks with due dates plotted on day cells
- Daily notes shown as blue dots
- Color-coded urgency (overdue/today/soon)
- Month navigation (prev/next) + Today button
- Click task → navigate to detail, click date → daily note
- Calendar link in sidebar navigation
Due Date
- Inline date picker in task detail panel
- Clear due date button
- 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.