Documenta y sigue a los michis de tu barrio
Sistema de registro y seguimiento de gatos callejeros
MichiSpotter es una aplicación de consola para documentar y localizar gatos callejeros en tu comunidad. Permite registrar información detallada sobre cada gato avistado, facilitando el seguimiento y cuidado de colonias felinas.
Este proyecto nace como una herramienta práctica para ayudar a comunidades y cuidadores de gatos a mantener un registro organizado de los felinos. Es también un proyecto de portfolio personal para demostrar habilidades en el desarrollo de software con Python.
- ✅ Estructura de Paquete Modular: Código separado en
models,database,operationsyutils. - ✅ Gestión de Base de Datos: Persistencia local robusta usando SQLite.
- ✅ Operaciones CRUD Completas: Funciones para Crear, Leer, Actualizar y Borrar registros.
- ✅ Búsqueda Avanzada: Función para buscar gatos por apodo, raza o ubicación.
- ✅ Exportación de Datos: Generación de informes en formato CSV para análisis externo.
- ✅ Pruebas Automatizadas: Suite de tests completa usando Pytest y fixtures.
- Python 3.x
- SQLite3
- Pytest (para la suite de pruebas)
- CSV & Pathlib (para manejo de archivos)
La estructura sigue las mejores prácticas de un paquete de Python:
MichiSpotter/
│
├── michispotter/ # El paquete principal de la aplicación
│ ├── __init__.py # Convierte la carpeta en un paquete
│ ├── database.py # Gestión de la conexión (Clase Bd)
│ ├── models.py # Definición del modelo (Clase Gato)
│ ├── operations.py # Funciones CRUD (crear_gato, etc.)
│ └── utils.py # Funciones auxiliares (buscar_gatos, exportar_a_csv, etc.)
│
├── tests/ # Pruebas automatizadas
│ └── test_operations.py
│
├── .gitignore # Archivos a ignorar por Git
├── README.md # Este archivo
└── gatos.sqlite3 # Base de datos (generada al ejecutar)
- Python 3.7 o superior
- Git
-
Clonar el repositorio:
git clone [https://github.com/MaribelSR/MichiSpotter.git](https://github.com/MaribelSR/MichiSpotter.git) cd MichiSpotter -
(Opcional pero recomendado) Crear un entorno virtual:
python -m venv venv
En Windows:
.\venv\Scripts\activateEn macOS/Linux:source venv/bin/activate -
Instalar el paquete en modo editable: El modo editable (
-e) hace que tus cambios en el código se reflejen al instante.pip install -e .
# Importa las funciones y clases desde el paquete
from michispotter import Gato, Bd, crear_gato, listar_gatos, buscar_gatos, exportar_a_csv
# 1. Crear un nuevo registro de gato
gato_nuevo = Gato()
gato_nuevo.raza = "Común Europeo"
gato_nuevo.descripcion = "Atigrado, muy amigable"
gato_nuevo.ubicacion = "Patio interior, Calle Larga"
gato_nuevo.apodo = "Tigre"
gato_nuevo.color = "Naranja y blanco"
# Guardar en la base de datos
crear_gato(gato_nuevo)
print(f"¡{gato_nuevo.apodo} ha sido registrado!")
# 2. Listar todos los gatos
print("\n--- Listado de Gatos ---")
gatos = listar_gatos()
for g in gatos:
print(f"ID {g.id}: {g.apodo} ({g.raza})")
# 3. Buscar un gato
print("\n--- Búsqueda de 'Tigre' ---")
gatos_encontrados = buscar_gatos("Tigre")
for g in gatos_encontrados:
print(f"Encontrado: {g.apodo} en {g.ubicacion}")
# 4. Exportar listado
if exportar_a_csv("mis_gatos.csv"):
print("\n✅ Archivo 'mis_gatos.csv' generado correctamente.")
# No olvides cerrar la conexión al final de tu app
Bd.cerrar()Este proyecto usa pytest para las pruebas.
-
Instalar pytest (si no lo tienes):
pip install pytest
-
Ejecutar la suite de tests: Desde la carpeta raíz (
MichiSpotter/), simplemente ejecuta:pytest
pytestencontrará y ejecutará automáticamente todos los tests en la carpetatests/.
- Estructura base del proyecto (CRUD)
- Implementar Pruebas con Pytest
- Añadir función de Búsqueda (
buscar_gatos) - Exportación de datos (CSV, JSON)
- Interfaz gráfica (GUI con Tkinter o web con Flask)
- Subida de fotografías de cada gato
- API REST para acceso remoto
Este es un proyecto de aprendizaje personal, pero las sugerencias y comentarios son bienvenidos. Si encuentras algún bug o tienes ideas para mejorarlo, no dudes en abrir un issue o enviar un pull request.
Este proyecto está licenciado bajo la Licencia Apache 2.0. Consulta el archivo LICENSE para más detalles.
Desarrollado por María Isabel Salvador Rufo como proyecto de portfolio para demostrar habilidades en:
- Programación Orientada a Objetos (POO) en Python.
- Diseño de paquetes modulares y mantenibles.
- Gestión de bases de datos con SQLite (operaciones CRUD completas).
- Testing automatizado con Pytest, incluyendo
fixturespersonalizadas (BBDD en memoria) y pruebas de efectos secundarios de E/S (tmp_path). - Refactorización y mantenimiento de código limpio.
Estado del proyecto: 🚧 En desarrollo activo