{"id":33902281,"url":"https://github.com/mrearsbig/task-tracker","last_synced_at":"2026-05-09T07:33:55.310Z","repository":{"id":324229626,"uuid":"1096081955","full_name":"mrearsbig/task-tracker","owner":"mrearsbig","description":"This application allows you to keep track of what you need to do, what you’ve completed, and what you’re currently working on. All tasks are stored in a JSON file located in the current directory.","archived":false,"fork":false,"pushed_at":"2025-11-14T13:50:37.000Z","size":69,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-13T02:55:12.373Z","etag":null,"topics":["backend","cli","gradle","java","json"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrearsbig.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-13T23:13:28.000Z","updated_at":"2025-11-14T13:50:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mrearsbig/task-tracker","commit_stats":null,"previous_names":["mrearsbig/task-tracker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mrearsbig/task-tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrearsbig%2Ftask-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrearsbig%2Ftask-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrearsbig%2Ftask-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrearsbig%2Ftask-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrearsbig","download_url":"https://codeload.github.com/mrearsbig/task-tracker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrearsbig%2Ftask-tracker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32811447,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","cli","gradle","java","json"],"created_at":"2025-12-12T00:16:42.624Z","updated_at":"2026-05-09T07:33:55.304Z","avatar_url":"https://github.com/mrearsbig.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Task Tracker CLI\n\nTask Tracker es una aplicación de línea de comandos (CLI) para rastrear y gestionar tus tareas. Este proyecto te permite\npracticar habilidades de programación, incluyendo el trabajo con el sistema de archivos, el manejo de entradas de\nusuario y la construcción de aplicaciones CLI.\n\n## Descripción\n\nEsta aplicación te permite realizar un seguimiento de lo que necesitas hacer, lo que has hecho y en qué estás trabajando\nactualmente. Todas las tareas se almacenan en un archivo JSON en el directorio actual.\n\n## Características\n\n- ✅ Agregar, actualizar y eliminar tareas\n- ✅ Marcar tareas como \"en progreso\" o \"completadas\"\n- ✅ Listar todas las tareas\n- ✅ Listar tareas por estado (completadas, pendientes, en progreso)\n- ✅ Almacenamiento persistente en archivo JSON\n- ✅ Manejo de errores y casos extremos\n\n## Requisitos\n\n- Java 21\n- Gradle (incluido en el proyecto con Gradle Wrapper)\n\n## Instalación\n\n1. Clona este repositorio:\n\n```bash\ngit clone \u003crepository-url\u003e\ncd task-tracker\n```\n\n2. Compila el proyecto:\n\n```bash\n./gradlew build\n```\n\n## Uso\n\n### Comandos Disponibles\n\n#### Agregar una nueva tarea\n\n```bash\n./gradlew run --args='add \"Comprar víveres\"'\n# Salida: Task added successfully (ID: 1)\n```\n\n#### Actualizar una tarea\n\n```bash\n./gradlew run --args='update 1 \"Comprar víveres y cocinar la cena\"'\n# Salida: Task updated successfully (ID: 1)\n```\n\n#### Eliminar una tarea\n\n```bash\n./gradlew run --args='delete 1'\n# Salida: Task deleted successfully (ID: 1)\n```\n\n#### Marcar una tarea como en progreso\n\n```bash\n./gradlew run --args='mark-in-progress 1'\n# Salida: Task marked as in progress (ID: 1)\n```\n\n#### Marcar una tarea como completada\n\n```bash\n./gradlew run --args='mark-done 1'\n# Salida: Task marked as done (ID: 1)\n```\n\n#### Listar todas las tareas\n\n```bash\n./gradlew run --args='list'\n```\n\n#### Listar tareas completadas\n\n```bash\n./gradlew run --args='list done'\n```\n\n#### Listar tareas pendientes\n\n```bash\n./gradlew run --args='list todo'\n```\n\n#### Listar tareas en progreso\n\n```bash\n./gradlew run --args='list in-progress'\n```\n\n## Propiedades de las Tareas\n\nCada tarea tiene las siguientes propiedades:\n\n- **id**: Identificador único de la tarea\n- **description**: Descripción breve de la tarea\n- **status**: Estado de la tarea (`todo`, `in-progress`, `done`)\n- **createdAt**: Fecha y hora de creación de la tarea\n- **updatedAt**: Fecha y hora de la última actualización\n\n## Estructura del Proyecto\n\n```\ntask-tracker/\n├── src/\n│   └── main/\n│       └── java/\n│           └── com/\n│               └── tasktracker/\n│                   ├── TaskTracker.java          # Punto de entrada de la aplicación\n│                   ├── model/\n│                   │   └── Task.java             # Modelo de datos de tarea\n│                   ├── repository/\n│                   │   └── TaskRepository.java   # Gestión de persistencia JSON\n│                   ├── service/\n│                   │   └── TaskService.java      # Lógica de negocio\n│                   └── util/\n│                       └── LocalDateTimeAdapter.java # Adaptador para serialización de fechas\n├── tasks.json                                     # Archivo de almacenamiento (generado automáticamente)\n├── build.gradle                                   # Configuración de Gradle\n└── README.md\n```\n\n## Almacenamiento de Datos\n\nLas tareas se almacenan en un archivo `tasks.json` en el directorio actual del proyecto. Este archivo se crea\nautomáticamente si no existe. Ejemplo de estructura:\n\n```json\n[\n  {\n    \"id\": 1,\n    \"description\": \"Comprar víveres\",\n    \"status\": \"todo\",\n    \"createdAt\": \"2025-11-13T10:30:00\",\n    \"updatedAt\": \"2025-11-13T10:30:00\"\n  },\n  {\n    \"id\": 2,\n    \"description\": \"Completar proyecto\",\n    \"status\": \"in-progress\",\n    \"createdAt\": \"2025-11-13T11:00:00\",\n    \"updatedAt\": \"2025-11-13T12:00:00\"\n  }\n]\n```\n\n## Implementación Técnica\n\n- **Lenguaje**: Java\n- **Gestión de dependencias**: Gradle\n- **Serialización JSON**: Gson\n- **Sistema de archivos**: Java NIO (java.nio.file)\n- **Manejo de fechas**: java.time.LocalDateTime\n\n## Características Técnicas\n\n- ✅ No utiliza frameworks externos (solo Gson para JSON)\n- ✅ Utiliza argumentos posicionales en línea de comandos\n- ✅ Manejo robusto de errores\n- ✅ Validación de entradas de usuario\n- ✅ Gestión automática de IDs únicos\n- ✅ Actualización automática de timestamps\n\n## Desarrollo\n\n### Compilar el proyecto\n\n```bash\n./gradlew build\n```\n\n### Ejecutar tests\n\n```bash\n./gradlew test\n```\n\n### Limpiar archivos compilados\n\n```bash\n./gradlew clean\n```\n\n## Manejo de Errores\n\nLa aplicación maneja los siguientes casos:\n\n- IDs de tarea no válidos\n- Tareas no encontradas\n- Archivos JSON corruptos\n- Comandos no reconocidos\n- Argumentos faltantes o incorrectos\n\n## Contribución\n\nEste proyecto fue desarrollado como parte del desafío de programación\nde [roadmap.sh](https://roadmap.sh/projects/task-tracker).\n\n## Licencia\n\nEste proyecto es de código abierto y está disponible bajo la licencia MIT.\n\n## Autor\n\nDesarrollado como proyecto de práctica para mejorar habilidades en:\n\n- Programación orientada a objetos\n- Manejo del sistema de archivos\n- Desarrollo de aplicaciones CLI\n- Gestión de datos con JSON\n- Arquitectura de software (Repository Pattern, Service Layer)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrearsbig%2Ftask-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrearsbig%2Ftask-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrearsbig%2Ftask-tracker/lists"}