A feature-rich desktop todo application built with Electron and Vue 3. Designed for project management with support for hierarchical organization, markdown notes, and visual data representation.
- Projects and Categories: Organize todos into projects with customizable categories and statuses
- Importance Ratings: Assign priority levels (1-5) to tasks
- Deadlines: Set start and end dates for time-sensitive tasks
- Completion Tracking: Mark tasks as complete with automatic timestamping
- Markdown Notes: Full markdown support with syntax highlighting
- Mermaid Diagrams: Embed flowcharts, sequence diagrams, and other visualizations
- Todo Linking: Create dependencies and relationships between tasks
- Subtasks: Break down complex tasks into manageable subtasks
- Recurrence: Set up recurring tasks with automatic regeneration
- Sensitive Notes: Password-protected notes with reveal confirmation
- Multiple Views: Switch between list, kanban board, and table layouts
- Drag-and-Drop: Reorder todos, projects, and categories
- Color Coding: Visual identification through customizable colors
- Person Management: Assign contacts to todos and projects
- Stakeholder Register: Track project stakeholders with role definitions
- SQLite Database: Local storage with efficient querying
- Export/Import: Backup and restore data in JSON format
- Trash System: Soft delete with recovery options
- Node.js 16 or higher
- npm or yarn
# Clone the repository
git clone https://github.com/sorenwacker/todo.git
cd todo
# Install dependencies
npm install
# Rebuild native modules for Electron
npm run rebuild# Start development server
npm run dev
# Run tests
npm test
# Run tests in watch mode
npm run test:watch# Build for production
npm run build
# Build for Windows
npm run build:win
# Build for macOS
npm run build:mac
# Build for both platforms
npm run build:allBuilt applications will be output to the dist/ directory.
- Frontend: Vue 3 with Composition API
- Desktop Framework: Electron 36
- Build Tool: electron-vite
- Database: better-sqlite3
- Markdown Parser: marked
- Diagram Rendering: mermaid
- UI Components: lucide-vue-next (icons), vuedraggable
src/
├── main/ # Electron main process
│ ├── index.js # Application entry point
│ └── database.js # SQLite database operations
├── preload/ # Preload scripts (IPC bridge)
│ └── index.js
├── renderer/ # Vue application
│ ├── App.vue # Main application view
│ ├── DetailApp.vue # Todo detail panel
│ ├── SettingsApp.vue # Settings interface
│ └── StakeholderRegisterApp.vue
└── resources/ # Application icons and assets
The application uses SQLite with the following main tables:
todos: Task records with metadataprojects: Project definitionscategories: Categorization labelsstatuses: Task status trackingpersons: Contact/stakeholder informationsubtasks: Sub-task hierarchytodo_links: Task dependenciestodo_persons: Task-person associationsproject_persons: Project stakeholder mapping
- Select or create a project
- Click "New Todo" or press the add button
- Enter task title and optional details
- Set importance, deadline, category, and status as needed
- Click the project name to rename
- Use the color picker to assign visual identification
- Access project settings through the gear icon
- View project stakeholders in the dedicated register
- Click a todo to open the detail panel
- Write markdown-formatted notes in the editor
- Preview renders automatically
- Use mermaid code blocks for diagrams
- Enable "Sensitive Notes" for password-protected content
- Drag todos to reorder within a project
- Link related todos using the link interface
- Create subtasks for complex activities
- Use categories and statuses for filtering
- Navigate to Settings
- Select "Export Data"
- Choose save location for JSON backup
- Import using "Import Data" with merge or replace options
The application stores data in the following locations:
- macOS:
~/Library/Application Support/todo/ - Windows:
%APPDATA%/todo/ - Linux:
~/.config/todo/
Database file: todos.db
The sensitive notes feature encrypts note content locally. This is designed to protect against casual viewing but should not be considered cryptographically secure for highly sensitive data.
- Fork the repository
- Create a feature branch
- Implement changes with tests
- Submit a pull request
Follow the existing code patterns and maintain compatibility with the current database schema.
This project is licensed under the MIT License.
- Initial release with core todo management
- Project and category organization
- Markdown and mermaid support
- Export/import functionality
- Person management system
- Sensitive notes feature
- Security updates for electron, vite, and vitest dependencies
- Fixed ASAR integrity bypass vulnerability
- Fixed esbuild development server vulnerability