commit 41b597f8fcd14751c419810df4f5b2f3ef83647c Author: dimitar Date: Thu May 8 23:44:28 2025 +0200 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..7313112 --- /dev/null +++ b/README.md @@ -0,0 +1,135 @@ +# TodoAI - AI-Powered Task Manager + +A terminal-based task manager with AI-powered task analysis and organization. + +## Features + +- Terminal User Interface (TUI) for managing tasks +- AI-powered task analysis (priority, category, time estimates) +- Background analysis during idle hours +- Task searching and filtering +- Multiple AI model support with fallback mechanisms +- SQLite database with connection pooling +- Configurable via environment variables + +## Installation + +### Prerequisites + +- Go 1.21 or higher +- SQLite3 +- Ollama (for AI analysis) + +### Building from source + +1. Clone the repository: + +```bash +git clone https://github.com/your-username/todo +cd todo +``` + +2. Install dependencies: + +```bash +make install-deps +``` + +3. Build the application: + +```bash +make build +``` + +### Using Docker + +Build and run with Docker: + +```bash +make docker-build +make docker-run +``` + +## Configuration + +The application can be configured using environment variables: + +### Database Settings + +- `DB_PATH`: Path to SQLite database (default: "todoai.db") +- `DB_MAX_OPEN_CONNS`: Maximum open connections (default: 25) +- `DB_MAX_IDLE_CONNS`: Maximum idle connections (default: 5) +- `DB_CONN_MAX_LIFETIME`: Connection lifetime in minutes (default: 5) + +### AI Settings + +- `AI_MODEL_NAME`: Name of the AI model (default: "deepseek-r1:latest") +- `AI_PROVIDER`: AI provider (default: "ollama") +- `AI_API_KEY`: API key for AI service (if required) + +### UI Settings + +- `UI_THEME`: UI theme (default: "default") +- `UI_REFRESH_INTERVAL`: Task list refresh interval in seconds (default: 60) +- `UI_IDLE_START_HOUR`: Start hour for background analysis (default: 22) +- `UI_IDLE_END_HOUR`: End hour for background analysis (default: 6) +- `UI_MAX_DISPLAY_TASKS`: Maximum tasks to display (default: 100) + +## Usage + +### Keyboard Shortcuts + +- `n`: New task +- `/`: Search tasks +- `TAB`: Toggle completed tasks +- `c`: Complete selected task +- `q` or `Ctrl+C`: Quit +- `ESC`: Cancel current action +- `Enter`: Select/confirm + +## Development + +### Running Tests + +```bash +make test +``` + +### Code Quality + +```bash +make lint +``` + +### Pre-commit Checks + +```bash +make pre-commit +``` + +## Project Structure + +``` +. +├── src/ +│ ├── ai/ # AI analysis functionality +│ ├── config/ # Configuration management +│ ├── database/ # Database operations +│ ├── models/ # Data models +│ └── ui/ # Terminal UI +├── main.go # Application entry point +├── Dockerfile # Container configuration +└── Makefile # Build and development tasks +``` + +## Contributing + +1. Fork the repository +2. Create a feature branch +3. Make your changes +4. Run tests and linting (`make pre-commit`) +5. Submit a pull request + +## License + +MIT License - see LICENSE file for details