Este proyecto es una aplicación web desarrollada con Flask para gestionar un proceso de admisión de postulantes. Incluye funcionalidades completas de autenticación, roles de usuario (Administrador y Postulante), subida de archivos (local y Cloudinary), y paneles de administración.
- Registro de Postulantes: Formulario de registro con validación de datos (DNI, correo único, contraseña).
- Verificación por Correo: Envío de código de verificación al correo electrónico para activar la cuenta.
- Inicio de Sesión: Sistema de login seguro con hash de contraseñas.
- Roles: Diferenciación entre
adminypostulante. - Perfil de Usuario: Visualización y edición de datos personales.
- Subida de Archivos: Los postulantes pueden subir documentos (PDF, imágenes, etc.).
- Almacenamiento Híbrido:
- Local: Por defecto, los archivos se guardan en la carpeta
uploads/. - Cloudinary: Si se configuran las credenciales, los archivos se suben automáticamente a la nube.
- Local: Por defecto, los archivos se guardan en la carpeta
- Validaciones: Control de extensiones permitidas y tamaño máximo de archivo (5MB).
- Descarga y Eliminación: Gestión completa de los archivos propios.
- Resumen General: Contadores de usuarios, archivos y postulantes pendientes.
- Gestión de Usuarios: Listado de todos los postulantes registrados.
- Cambio de Estado: El administrador puede aprobar, rechazar o mantener en pendiente a los postulantes.
- Gestión de Archivos Global: El admin puede ver, descargar y eliminar cualquier archivo del sistema.
- Backend: Python 3, Flask.
- Base de Datos: SQLite (Configuración actual, escalable a PostgreSQL).
- ORM: SQLAlchemy.
- Frontend: HTML5, CSS3 (Diseño Responsive), Jinja2 Templates.
- Email: Flask-Mail (Gmail SMTP).
- Almacenamiento Cloud: Cloudinary SDK.
- Python 3.10 o superior.
- Pip (Gestor de paquetes de Python).
-
Clonar el repositorio:
git clone https://github.com/KalebCxDev/flask-login-system.git cd flask-login-system -
Crear y activar un entorno virtual:
# Windows python -m venv venv venv\Scripts\activate # Linux/Mac python3 -m venv venv source venv/bin/activate
-
Instalar dependencias:
pip install -r requirements.txt
-
Configurar Variables de Entorno (.env): Crea un archivo
.enven la raíz del proyecto con el siguiente contenido:# Seguridad de Flask SECRET_KEY=tu_clave_secreta_super_segura # Configuración de Correo (Gmail) MAIL_SERVER=smtp.gmail.com MAIL_PORT=587 MAIL_USE_TLS=True MAIL_USERNAME=tucorreo@gmail.com MAIL_PASSWORD=tu_contraseña_de_app MAIL_DEFAULT_SENDER=tucorreo@gmail.com # Configuración de Cloudinary (Opcional, si no se pone usa almacenamiento local) CLOUDINARY_CLOUD_NAME=cloudinary_cloud_name CLOUDINARY_API_KEY=tu_api_key CLOUDINARY_API_SECRET=tu_api_secret
-
Inicializar la Base de Datos: La base de datos se crea automáticamente al ejecutar la aplicación por primera vez gracias a
db.create_all()enapp.py.
Para correr el servidor de desarrollo:
python app.pyLa aplicación estará disponible en http://127.0.0.1:5000.
flask-login-system/
├── app.py # Archivo principal de la aplicación (Rutas y Lógica)
├── models.py # Modelos de Base de Datos (Usuario, Postulante, Archivo)
├── config_mail.py # Configuración del servidor de correo
├── cloudinary_utils.py # Funciones auxiliares para Cloudinary
├── requirements.txt # Dependencias del proyecto
├── .env # Variables de entorno (No incluir en repositorios públicos)
├── instance/ # Base de datos SQLite
├── static/ # Archivos estáticos
│ ├── css/ # Hojas de estilo
│ └── js/ # Scripts JavaScript
├── templates/ # Plantillas HTML (Jinja2)
│ ├── base.html # Layout base
│ ├── login.html # Login
│ ├── register.html # Registro
│ ├── dashboard.html # Panel del postulante
│ ├── admin_*.html # Paneles de administración
│ └── ...
└── uploads/ # Carpeta para archivos subidos localmente
- Contraseñas: Hasheadas con
werkzeug.security. - Rutas Protegidas: Decoradores
@login_requiredy@admin_required. - Archivos: Validación de extensiones y nombres de archivo seguros (UUID).
- KalebCxDev - *Frontend *
- joshuanavarrovelasquez-desig - *Backend *
- JHOSEPEMC - *Base de datos *
© 2025 Sistema de Admisión IESTPO