A beautiful command-line task management application built with Node.js, with file-based storage (JSON) and stunning visual interface that helps users organize and track their tasks efficiently.
- π¨ Beautiful CLI Interface - Colorful, boxed menus and messages using chalk and boxen
- β Complete Task Management - Add, complete, remove, and view tasks
- π Smart Date Handling - Displays "Today", "Tomorrow", "Overdue" with color coding
- π‘οΈ Comprehensive Validation - Input validation with user-friendly error messages
- πΎ File-Based Storage - Persistent JSON storage with error recovery
- π Confirmation Dialogs - Prevents accidental deletions
- ποΈ Modular Architecture - Clean, object-oriented design
- π― User-Friendly - Intuitive interface with clear feedback
-
Clone the repository
git clone https://github.com/Sherifdeji/cli-todoApp.git cd todo-cli-app -
Install dependencies
npm install
-
Run the application
npm start
π TODO APP MENU
1. Add a new task
2. Mark a task as Completed
3. Remove a task
4. View all tasks
5. Exit Application
- Enter a descriptive task name
- Provide due date in YYYY-MM-DD format
- Past dates are automatically rejected
- Complete Tasks: Choose from pending tasks list
- Remove Tasks: Select from all tasks with confirmation
- View Tasks: See pending and completed tasks separately
π cli-todoApp/
βββ π legacy/
β βββ π todoApp.js # Original monolithic implementation
βββ πsrc/
β βββ πtask.js # Task model definition
β βββ πtodo.js # Main application logic(entry point)
β βββ πtodomanager.js # Task management operations
βββ πutils/
β βββ πvalidation.js # Input validation utilities
βββ πpackage.json # Project configuration
βββ π .gitignore
βββ πREADME.md # Project documentation
- Node.js - Runtime environment
- Readline - CLI input handling
- Chalk - Terminal colors and styling
- Boxen - Terminal boxes and borders
- File System (fs) - JSON data persistence
npm start # Run the main application
npm run legacy # Run the original version
npm test # Run tests (placeholder)- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License. Feel free to use and modify for your own projects.
Built with β€οΈ by Sherif Ibrahim