A Vim-inspired terminal-based todo list application written in Rust using iocraft for the TUI and SQLite for persistence.
- Vim-like modal interface
- Persistent storage using SQLite
- Terminal-based user interface
- CRUD operations for tasks
- Status tracking for tasks (Pending/Completed)
The application has different modes similar to Vim:
-
Normal Mode: Default mode for navigation
i: Enter Insert modea: Enter Insert mode (clear input)c: Enter Complete modeu: Enter Update moded: Enter Delete mode
-
Insert Mode: For adding new tasks
Esc: Return to Normal modeEnter: Save new task
-
Complete Mode: For marking tasks as completed
Esc: Return to Normal modeEnter: Mark selected task as completed
-
Update Mode: For modifying existing tasks
Esc: Return to Normal modeEnter: Confirm update
-
Delete Mode: For removing tasks
Esc: Return to Normal modeEnter: Delete selected task
- Lifetimes: Understanding and managing references with explicit lifetime annotations
- Enums: Using enums for state management (EditorMode, TaskStatus)
- Structs: Implementing data structures with methods and traits
- Error Handling: Using Result and Option types for robust error handling
- Pattern Matching: Extensive use of match expressions for mode and event handling
- Using rusqlite for SQLite database operations
- CRUD operations implementation
- Connection management and error handling
- SQL query execution and result handling
- Modal editing system inspired by Vim
- State transitions between different modes
- Managing application state with hooks
- Handling user input and events
- Terminal-based user interface development
- Event handling and user input processing
- Custom component development
- Layout and styling implementation
iocraft: Terminal user interface frameworkrusqlite: SQLite database integrationsmol: Async runtime for terminal events
cargo build --releasecargo run

