Skip to content

Latest commit

 

History

History
367 lines (262 loc) · 9.73 KB

File metadata and controls

367 lines (262 loc) · 9.73 KB
Project Banner

Version License Issues Coverage Stars


tache-cli

lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do

lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.


Live Demo  ·  Documentation  ·  Article  · 


📋 Table of Contents


Overview

tache-cli is a [type of project] that allows [target users] to [core value proposition]. Unlike [existing alternatives], it [key differentiator]. It was built to [motivation or origin story].


Features

  • 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,
    allowing users to set recurring or one-time deadlines that trigger background jobs automatically.

  • Real-Time Notifications
    An event-driven notification system using Node.js EventEmitter
    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's ft_printf project,
    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 --stats CLI flag.


Tech Stack

Layer Technology
Core Language TypeScript
Backend Node.js
Database PostgreSQL, Sequelize
Cache Redis
DevOps Docker, Jenkins
Testing Jest
Log Vlogging
Linter Lentte

Getting Started

Prerequisites

node >= 18.0.0
npm >= 9.0.0
docker >= 24.0.0  # optional

Installation

1. Clone the repository

git clone https://github.com/fevunge/project-name.git
cd project-name

2. Install dependencies

npm install
# or
yarn install

3. Set up environment variables

cp .env.example .env

4. Run database migrations

npm run db:migrate
npm run db:seed  # optional: seed with sample data

5. Start the development server

npm run dev

The app will be running at http://localhost:3000


Environment

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

Usage

Basic Example

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 Example

// 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 /examples directory for more comprehensive usage patterns.


Project Structure

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

API Reference

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


Screenshots

Dashboard Detail View Mobile
Dashboard Detail Mobile

Roadmap

  • 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.


Contributing

Contributions are what make the open source community incredible.
Any contributions you make are greatly appreciated.

  1. Fork the repository
  2. Create your feature branch: git checkout -b feat/feature-or-bugfix
  3. Commit your changes: git commit -m 'feat: add some amazing feature or fix a bug'
  4. Push to the branch: git push origin feat/feature-or-bugfix
  5. 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

Authors

Fernando Vunge
GitHub LinkedIn Twitter

Made with 🧠 by fevunge

Star this repo if you found it helpful!

Acknowledgements


License

Distributed under the MIT License.