The system manages tasks with priorities, due dates, tags, and interdependencies, using SQLite persistence via Drizzle ORM
and integrates with Ollama for intelligent prioritization suggestions based on the user’s historical patterns.
Live Demo · Documentation · Article ·
- Overview
- Features
- Tech Stack
- Getting Started
- Usage
- Project Structure
- API Reference
- Screenshots
- Roadmap
- Contributing
- Authors
- Acknowledgements
- License
Tache CLI is a lightweight yet enterprise-ready task management system designed for developers and technical professionals who prefer working directly from the command line. It enables fast and organized task management through a terminal-first experience, with support for priorities, deadlines, reminders, alarms, and intelligent notifications.
Unlike traditional to-do list applications that focus mainly on graphical interfaces, Tache CLI is deeply integrated with Large Language Models (LLMs), transforming task management into an intelligent workflow assistant.
-
Task CRUD & Validation
Full create, read, update, and delete operations for tasks, with strict schema validation powered by Zod
— ensuring all inputs are type-safe and well-formed before hitting the database. -
Task Scheduling
Tasks can be scheduled for future execution using cron job syntax or thetaimplexsyntax, allowing users to set recurring or one-time deadlines that trigger background jobs automatically. -
Real-Time Notifications
An event-driven notification system using Node.jsEventEmitter
that fires alerts when tasks are created, updated, completed, or overdue — without polling. -
Export / Import
Users can export their full task list (or filtered subsets) to JSON, CSV, or raw SQL,
and re-import from any of those formats — useful for backups, migrations, or data sharing. -
Fuzzy Search with Levenshtein Distance
A search engine that finds tasks even with typos or partial matches,
using the Levenshtein distance algorithm to rank results by similarity. -
Undo / Redo
A command history stack that lets users undo or redo any destructive action (delete, bulk update, etc.) within the current session. -
Plugin System
A dynamic plugin loader that allows third-party or user-defined modules to extend the CLI's functionality at runtime,
without modifying the core codebase. -
Custom Norminette (Linter)
A project-specific linting ruleset that enforces code style conventions similar to 42's norminette
— function length limits, naming rules, and forbidden patterns — implemented as a custom ESLint plugin. -
Detailed Logging (ft_printf style)
A structured logging module -vlogging- inspired by 42'sft_printfproject,
with log levels, timestamps, color-coded output, and optional verbose mode for debugging internals. -
Memory & Resource Tracking
A lightweight tracker that monitors heap usage, open handles,
and DB connection counts throughout the process lifecycle
— surfaced via a--statsCLI flag.
| Layer | Technology |
|---|---|
| Core Language | TypeScript |
| Frontend | Commander.js |
| Backend | Node.js |
| Database | PostgreSQL, Sequelize |
| Cache | Redis |
| DevOps | Docker, Jenkins |
| Testing | Jest |
| Log | Vlogging |
| Linter | Lentte |
node >= 18.0.0
npm >= 9.0.0
docker >= 24.0.0 # optional1. Clone the repository
git clone https://github.com/fevunge/project-name.git
cd project-name2. Install dependencies
npm install
# or
yarn install3. Set up environment variables
cp .env.example .env4. Run database migrations
npm run db:migrate
npm run db:seed # optional: seed with sample data5. Start the development server
npm run devThe app will be running at http://localhost:3000
Create a .env file in the root directory. See .env.example for reference.
| Variable | Description | Required |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | ✅ |
JWT_SECRET |
Secret key for JWT signing | ✅ |
NEXT_PUBLIC_API_URL |
Base URL for API calls | ✅ |
SMTP_HOST |
Email server host | ⬜ |
STRIPE_SECRET_KEY |
Stripe payment secret | ⬜ |
import { ProjectClient } from 'project-name';
const client = new ProjectClient({
apiKey: process.env.API_KEY,
region: 'us-east-1',
});
const result = await client.doSomething({
input: 'your-data',
options: { verbose: true },
});
console.log(result);// Advanced use case with error handling
try {
const response = await client.advancedFeature({
param1: 'value',
param2: 42,
});
if (response.success) {
// handle success
}
} catch (error) {
console.error('Something went wrong:', error.message);
}💡 Tip: Check the
/examplesdirectory for more comprehensive usage patterns.
tache-cli
├── assets
│ ├── logo
│ │ └── tache.png
│ └── screenshot
├── dev
│ └── db-desing.md
├── docs
│ ├── api.md
│ ├── CHANGELOG.md
│ ├── CONTRIBUTING.md
│ ├── USAGE.md
│ └── USERGUIDE.md
├── resource
├── src
│ ├── application
│ ├── domain
│ ├── infrastructure
│ │ ├── config
│ │ └── database
│ │ ├── config
│ │ │ ├── external.db.config.ts
│ │ │ └── local.db.config.ts
│ │ └── client.database.ts
│ ├── presentation
│ └── shared
│ ├── const
│ └── utils
│ └── os.service.ts
├── test
├── .gitignore
├── Jenkinsfile
├── package.json
├── pnpm-lock.yaml
└── README.md
Full API reference available at /docs/api.md
GET /api/v1/resource: Returns a list of resources.POST /api/v1/resource: Creates a new resource.
Full API reference available at /docs/api.md
- Core feature implementation
- REST API
- Authentication & authorization
- Real-time notifications via WebSockets
- Mobile application (React Native)
- AI-powered suggestions engine
- Multi-tenancy support
- Internationalization (i18n)
See open issues for a full list of proposed features and known bugs.
Contributions are what make the open source community incredible.
Any contributions you make are greatly appreciated.
- Fork the repository
- Create your feature branch:
git checkout -b feat/feature-or-bugfix - Commit your changes:
git commit -m 'feat: add some amazing feature or fix a bug' - Push to the branch:
git push origin feat/feature-or-bugfix - Open a Pull Request
Please read CONTRIBUTING.md if it exists for more details on our code of conduct, and the process for submitting pull requests.
Please, follow Conventional Commits:
feat(scope): New feature
fix(scope): Bug fix
docs(scope): Documentation update
style(scope): Formatting (no logic change)
refactor(scope): Code refactoring
test(scope): Adding tests
chore(scope): Maintenance tasks
Made with 🧠 by fevunge
⭐ Star this repo if you found it helpful!
- Awesome Library — Used for X feature
- Design Inspiration — UI/UX reference
- Community Resource — Problem-solving guidance
- Open Source Project — Architectural patterns
Distributed under the MIT License.
