Caracteristicas y Especificaciones

Este proyecto demuestra mi capacidad para construir soluciones robustas con almacenamiento de datos local persistente mediante SQLite, enfocándome en una experiencia de usuario intuitiva y una estructura de código limpia y mantenible.
Tecnologías Clave:
- Python: El lenguaje central de desarrollo.
- Tkinter: Para la creación de una Interfaz Gráfica de Usuario (GUI) nativa.
- SQLite: Una base de datos embebida para almacenamiento local y persistente.
- Git: Para un control de versiones eficiente del código.

Puntos Clave y Habilidades Demostradas:
- Ciclo de Vida de Datos (CRUD Completo): Implementé las funcionalidades de Crear, Leer, Actualizar y Eliminar (CRUD) contactos de manera estructurada y controlada, asegurando la integridad de los datos a lo largo de todo el proceso.
- Diseño de Interfaz Gráfica (GUI) con Tkinter: Desarrollé una interfaz gráfica nativa e intuitiva, optimizada para la usabilidad. La elección de Tkinter subraya mi habilidad para construir soluciones multiplataforma sin dependencias externas complejas, facilitando la compatibilidad y portabilidad.
- Persistencia de Datos con SQLite: Integré una base de datos SQLite embebida para el almacenamiento local y persistente de contactos. Esto destaca mi comprensión del manejo de datos y la capacidad de implementar soluciones de base de datos eficientes y ligeras sin necesidad de servicios externos.
- Validación y Saneamiento de Datos de Entrada: Establecí validaciones rigurosas en todos los campos de entrada. Esto garantiza la integridad de los registros, previene errores y demuestra un enfoque proactivo en la seguridad de los datos a nivel de aplicación.
- Funcionalidades de Búsqueda y Filtrado Avanzadas: Implementé capacidades de búsqueda y filtrado eficientes por múltiples parámetros, permitiendo un acceso rápido y preciso a la información. Esto refleja mi habilidad para optimizar la recuperación de datos y mejorar la productividad del usuario.
- Diseño de Código Modular y Legible: El proyecto está estructurado con una clara separación de responsabilidades entre la lógica de negocio, la interfaz de usuario y la capa de datos. Esto facilita la mantenibilidad, escalabilidad y la colaboración en futuros desarrollos.
def configurar_grid(self):
"""
Configura el diseño de la cuadrícula principal de la ventana.
"""
# Configurar el peso de las columnas
self.columnconfigure(0, weight=1) # Panel izquierdo (Canvas)
self.columnconfigure(1, weight=1) # Panel derecho (Formulario)
# Configurar el peso de las filas
self.rowconfigure(0, weight=0) # Encabezado
self.rowconfigure(1, weight=0) # Barra de búsqueda
self.rowconfigure(2, weight=1) # Contenido principal (panel izquierdo y derecho)
self.rowconfigure(3, weight=0) # Botones de acción
self.rowconfigure(4, weight=0) # Botones de import/export
Relevancia Profesional:
Aunque de escala modesta, esta aplicación es una prueba concreta de mi dominio en los fundamentos del desarrollo de software. Demuestra mi capacidad para integrar un backend robusto (SQLite), una lógica de negocio sólida (Python) y un frontend funcional (Tkinter), creando una solución completa y pulida. Este proyecto refuerza mi perfil como desarrollador orientado al detalle, capaz de diseñar y construir aplicaciones funcionales con un enfoque en la calidad del código y la experiencia del usuario.
def buscar_contacto(self, criterio):
"""
Busca contactos en la base de datos que coincidan con el criterio.
:param criterio: Texto a buscar en nombre, apellido o email
:return: Lista de instancias de Persona que coinciden con el criterio
"""
consulta = (
'SELECT * FROM personas WHERE nombre LIKE ? OR apellido LIKE ? OR email LIKE ?'
)
parametros = (f'%{criterio}%', f'%{criterio}%', f'%{criterio}%')
try:
resultados = self.__coneccion._obtener_datos(consulta, parametros)
return [Persona.from_db_row(fila) for fila in resultados]
except Exception as e:
print(f'Error al buscar contacto: {e}')
return []
Para conocer mas:
¿Interesado en la implementación? Explora el código fuente y la documentación detallada del proyecto en mi repositorio de GitHub.
Ver codigo del proyecto