Ir al contenido
  1. Proyectos/

Mi primer sistema de autenticación con Python (login + registro)

Uno de los primeros proyectos completos que desarrollé durante mi formación fue un sistema de gestión de usuarios con registro e inicio de sesión, implementado en Python.

Aunque a nivel técnico es un proyecto introductorio, fue clave para entender conceptos fundamentales como autenticación, modelado de datos, separación de responsabilidades y trabajo en equipo.

💻 Repositorio: https://github.com/Grupo-22-ISPC/Evidencia-3-Prog-y-BD

📌 Contexto del proyecto #

Este proyecto fue desarrollado como parte de una actividad integradora en la materia Programación I, dentro de la tecnicatura en desarrollo web y aplicaciones digitales.

El objetivo principal era construir un sistema que permita:

  • Registrar usuarios
  • Iniciar sesión
  • Gestionar roles (administrador / usuario)
  • Administrar cuentas (listar, modificar, eliminar)

Además del desarrollo en Python, también se trabajó en paralelo el diseño de una base de datos relacional en MySQL, aunque en esta etapa no se llegó a integrar directamente con la aplicación.


🏗️ Enfoque y arquitectura #

Una de las decisiones más importantes del proyecto fue separar claramente las responsabilidades dentro del sistema. Para eso se definieron tres clases principales:

  • Usuario: representa los datos de cada usuario
  • GestorUsuarios: contiene la lógica de negocio (registro, login, validaciones, etc.)
  • Sistema: maneja la interacción con el usuario (menús y flujo de la aplicación)

Este enfoque permitió mantener una estructura organizada incluso siendo una aplicación de consola.

Además, la aplicación funciona en memoria, simulando el comportamiento de una base de datos mediante listas y estructuras internas.


🗄️ Diseño de base de datos #

En paralelo al desarrollo en Python, se diseñó una base de datos relacional normalizada (3FN), con dos entidades principales:

  • usuarios
  • roles

La relación entre ambas es de uno a muchos, donde cada usuario tiene un único rol, pero un rol puede pertenecer a múltiples usuarios.

Este diseño permitió:

  • Evitar redundancia de datos
  • Separar responsabilidades
  • Preparar el sistema para una futura integración real con base de datos

🔑 Funcionalidades principales #

El sistema implementa las operaciones básicas de un sistema de autenticación:

  • Registro de nuevos usuarios
  • Inicio de sesión validando credenciales
  • Asignación y cambio de roles
  • Eliminación de usuarios
  • Visualización de datos según permisos

También se incluyeron validaciones internas como:

  • Verificación de usuarios existentes
  • Reglas básicas para contraseñas

🧩 Trabajo en equipo y metodología #

El proyecto se desarrolló en equipo utilizando un enfoque ágil:

  • Uso de tablero Kanban
  • Organización mediante issues y tareas
  • Documentación en Wiki
  • Definición de responsabilidades por rol

Aunque había una división formal de tareas, en la práctica participé en múltiples áreas del proyecto, incluyendo:

  • Desarrollo y ajuste de funcionalidades CRUD
  • Mejora de flujos en los menús de consola
  • Corrección de errores en la lógica del sistema

Este entorno me permitió tener un primer contacto real con dinámicas de trabajo colaborativo.


⚠️ Limitaciones del proyecto #

Como parte del alcance académico, el sistema tiene algunas limitaciones importantes:

  • No existe persistencia real (los datos se pierden al cerrar la aplicación)
  • No hay integración entre la aplicación y la base de datos diseñada
  • Las contraseñas no están encriptadas (solo representadas como texto)

Lejos de ser un problema, estas limitaciones forman parte del proceso de aprendizaje y abren la puerta a futuras mejoras.


🚀 Qué aprendí #

Este proyecto fue clave para entender:

  • Cómo estructurar una aplicación más allá de un solo archivo
  • Separación entre lógica de negocio y presentación
  • Modelado de datos y normalización
  • Implementación básica de autenticación
  • Trabajo en equipo con herramientas reales

💡 Qué haría diferente hoy #

Si tuviera que rehacer este proyecto, aplicaría varias mejoras:

  • Integrar la aplicación con la base de datos MySQL
  • Implementar hashing de contraseñas
  • Separar aún más las capas (por ejemplo, aplicar una arquitectura tipo MVC)
  • Agregar tests para validar la lógica de negocio
  • Crear una API en lugar de una aplicación de consola

🧠 Conclusión #

Más allá de su simplicidad, este proyecto representa un punto de partida importante en mi formación como desarrollador.

No solo me permitió aplicar conceptos técnicos, sino también entender cómo se construye software en equipo, cómo se toman decisiones y cómo evoluciona un sistema desde una idea inicial hasta una solución funcional.

Gerardo Catalas
Autor
Gerardo Catalas
Me especializo en el desarrollo backend, con experiencia práctica en C# (.NET) y SQL Server. Actualmente continúo ampliando mis conocimientos en nuevas tecnologías mediante formación y proyectos personales.