Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevTracker CLI

DevTracker CLI es una aplicación de terminal escrita en Python para gestionar proyectos de desarrollo y las tareas asociadas a cada uno.

Este proyecto nació con un objetivo principalmente educativo: aprender Python construyendo una aplicación completa, desde un menú sencillo hasta una estructura modular con persistencia, validaciones y tests automáticos.

Note

El código contiene más comentarios de los que serían habituales en un proyecto de producción. Se han mantenido deliberadamente porque documentan los conceptos que fui aprendiendo durante el desarrollo y permiten seguir la evolución de cada decisión.

Funcionalidades

  • Crear y listar proyectos.
  • Evitar proyectos sin nombre o duplicados.
  • Crear, consultar y eliminar tareas dentro de un proyecto.
  • Completar tareas y cambiar su prioridad.
  • Utilizar IDs únicos para localizar tareas.
  • Buscar tareas globalmente por texto o ID.
  • Filtrar tareas por estado o prioridad.
  • Mostrar estadísticas globales:
    • proyectos y tareas totales;
    • tareas pendientes y completadas;
    • porcentaje completado;
    • distribución por prioridad.
  • Guardar automáticamente los datos en JSON.
  • Recuperar proyectos, tareas e IDs al iniciar la aplicación.
  • Gestionar entradas incorrectas sin cerrar inesperadamente el programa.

Tecnologías y conceptos practicados

  • Python 3.10+
  • Programación orientada a objetos
  • Módulos, paquetes e imports
  • Listas, diccionarios, tuplas y comprensiones
  • Funciones, excepciones y validación de datos
  • Lectura, escritura y serialización JSON
  • Separación básica por responsabilidades
  • Testing automático con Pytest
  • Fixtures, parametrización, monkeypatch, capsys y pruebas de humo

Arquitectura

DevTracker_CLI/
├── src/
│   ├── main.py
│   ├── persistence.py
│   ├── models/
│   │   ├── proyecto.py
│   │   └── tarea.py
│   ├── services/
│   │   ├── proyecto_service.py
│   │   ├── tarea_service.py
│   │   ├── busqueda_service.py
│   │   └── estadisticas_service.py
│   └── utils/
│       └── validadores.py
├── data/
│   └── proyectos.example.json
├── tests/
├── docs/
│   ├── DESIGN.md
│   └── TESTING.md
└── pytest.ini

Responsabilidades principales:

  • main.py: controla el menú y el flujo general.
  • models/: contiene las entidades Proyecto y Tarea y protege sus reglas.
  • services/: implementa las operaciones de proyectos, tareas, búsquedas y estadísticas.
  • utils/: reúne validadores reutilizables.
  • persistence.py: guarda y reconstruye los objetos desde el archivo JSON.
  • tests/: comprueba el dominio, las búsquedas, las estadísticas y el arranque de la CLI.

El documento docs/DESIGN.md explica con detalle la evolución del proyecto y las decisiones tomadas en cada fase.

Requisitos

  • Python 3.10 o superior, necesario para utilizar match/case.
  • Pytest, únicamente para ejecutar los tests.

La aplicación no necesita dependencias externas para funcionar.

Ejecución

Desde la raíz del repositorio:

python3 src/main.py

La primera vez puede no existir data/proyectos.json. La aplicación comenzará sin proyectos y creará el archivo al guardar los primeros datos.

El archivo real de datos está excluido de Git. El repositorio incluye data/proyectos.example.json como referencia de su estructura.

Tests

Instala Pytest:

python3 -m pip install pytest

Ejecuta la suite completa:

pytest -v

También puedes ejecutar un módulo concreto:

pytest tests/test_busqueda_service.py -v
pytest tests/test_estadisticas_service.py -v

La estrategia de testing está explicada en docs/TESTING.md.

Persistencia

Los datos se almacenan en data/proyectos.json. Antes de guardarlos, los objetos Proyecto y Tarea se convierten en estructuras compatibles con JSON mediante to_dict().

Al iniciar la aplicación se reconstruyen los objetos y se recupera el ID más alto existente para continuar la numeración de tareas.

Estado del proyecto

La versión actual se considera funcional y cerrada como proyecto de aprendizaje. Todas las opciones del menú principal están implementadas.

Posibles mejoras futuras:

  • añadir anotaciones de tipos;
  • ampliar la cobertura de los servicios y la persistencia;
  • validar con mayor profundidad el contenido del JSON;
  • reemplazar el almacenamiento JSON por SQLite;
  • empaquetar la aplicación como un comando instalable;
  • reducir progresivamente los comentarios pedagógicos conforme madure el código.

Motivación

DevTracker CLI no pretende ser una alternativa comercial a un gestor de proyectos. Su valor está en mostrar un proceso de aprendizaje incremental: comenzar con estructuras básicas de Python, detectar problemas de diseño, refactorizar el código en módulos y proteger el comportamiento mediante tests.

El repositorio se conserva como parte de mi portfolio para documentar ese recorrido y servir como base para futuras mejoras.

About

ProjectTracker CLI es un gestor de proyectos para programadores que funciona desde la terminal, donde puedes crear proyectos y gestionar las tareas pendientes de cada uno.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages