CristianPumaES6 / L3V3L_UP_T3K

Este ejercicio se enfoca en desarrollar y desplegar una API REST utilizando el framework Flask de Python. La API consta de tres endpoints principales: Registro y Autenticación de usuarios, Carga de Imágenes y Procesamiento OCR de imágenes.
0 stars 0 forks source link

L3V3L_UP_T3K 🚀

Este proyecto es una aplicación web construida con Flask que se ejecuta en un contenedor Docker. En este contenedor Docker, además de la aplicación Flask que ocupa el puerto 5000, se ejecutan una base de datos PostgreSQL en el puerto 5432 y pgAdmin en el puerto 80. A continuación, se detallan los pasos para levantar la aplicación desde el contenedor.

image

Requisitos previos 🛠️

Antes de continuar, asegúrate de tener instalados los siguientes requisitos en tu sistema:

Pasos para ejecutar la aplicación 🏃‍♂️

  1. Clona este repositorio en tu sistema:

        git clone https://github.com/CristianPumaES6/L3V3L_UP_T3K.git
  2. Navega hasta el directorio del proyecto:

        cd L3V3L_UP_T3K
  3. Construye la imagen Docker utilizando el siguiente comando:

        docker-compose build
  4. Inicia los contenedores utilizando el siguiente comando:

        docker-compose up
  5. Una vez que los contenedores estén en funcionamiento, podrás acceder a la aplicación Flask y validar la conexion con la siguiente URL:

        http://localhost:5000/test_db_connection
    
        # SI LA CONEXION ESTA OK, Significa que se mapeo correctamente las talbas users,images en la BD root
    
        # Podemos saltarnos al paso numero 11
        http://localhost:5000/register
  6. Abrimos la interfaz de administración de PostgreSQL a través del navegador:

         http://localhost/
  7. Utiliza las credenciales predeterminadas para acceder al {PGADMIN}

    {
        usuario: admin@admin.com,
        contraseña: admin
    }
  8. Luego crearemos una nueva conexion

    {
        Hostname: postgrest,
        port: 5432,
        maintenance: root,
        username: root,
        psw: root,
    }
  9. Ahora la configuración por defecto de la base de datos está con 'root'. Podemos crear una nueva base de datos llamada 'l3v3lupt3k', esto es opcional. Si deseamos agregar otra base de datos, tendríamos que hacer lo siguiente:

      # name data base 
      l3v3lupt3k
      # Modificamos la bd a ingresar
      config.py/
        class Config:
            SECRET_KEY = os.getenv('SECRET_KEY', 'tu_clave_secreta_predeterminada')
            # Database URI
            SQLALCHEMY_DATABASE_URI = 'postgresql://root:root@postgres:5432/l3v3lupt3k'
    image
  10. Ahora tendremos que mapear las tablas a la nueva BD

        # Detenemos docker y volvemos a ejecutar
    
        docker-compose up
    
        # Nos dirigimos al pgadmin y revisamos dentro de Schemas/public/tabla/  Si se crearon las tablas users y Images 
    
         http://localhost/
        # {  ESTO ES OPCIONAL }
        # Si las tablas no se crearon, tendremos que hacerlo manualmente o desde el source venv/bin/activate
    
        source venv/bin/activate
    
        flask db init
    
        flask db migrate
    
        flask db upgrade
         http://localhost/
  11. Empezamos registrando un nuevo usuario para luego iniciar session :

        http://localhost:5000/register

PRUEBAS UNITARIAS 📝

Este proyecto incluye pruebas unitarias para garantizar el correcto funcionamiento de las funcionalidades. A continuación, se proporcionan instrucciones sobre cómo ejecutar estas pruebas.

  1. Asegúrate de que tengas Python y las dependencias requeridas instaladas en tu entorno.

  2. Configura tu entorno virtual (si se utiliza) e instala las dependencias del proyecto:

    python -m venv venv
    source venv/bin/activate  # En Windows: venv\Scripts\activate
    pip install -r requirements.txt
  3. Ejecuta las pruebas unitarias utilizando el siguiente comando:

    python -m unittest tests.test_auth

Ejecución de las Pruebas

Para ejecutar las pruebas unitarias, sigue estos pasos:

Flujo de Pantallas 🖥️

A continuación, se presenta el flujo de pantallas de nuestro proyecto "L3V3L_UP_T3K" con sus vistas específicas:

  1. Pantalla de Inicio / Inicio de Sesión

    • Rutas: / y /login
    • Esta es la pantalla de inicio de la aplicación.
    • Proporciona información general sobre el proyecto y ofrece un formulario de inicio de sesión. También incluye una opción para redireccionar al formulario de registro. image
  2. Pantalla de Registro 📝

    • Ruta: /registro
    • Los usuarios pueden registrarse desde esta pantalla.
    • Después del registro, son redirigidos automáticamente al formulario de inicio de sesión. image
  3. Actualizar Imagen de Perfil 📷

    • Ruta: /updateImage
    • Se requiere un token de autenticación para acceder a esta pantalla.
    • Permite a los usuarios actualizar su foto de perfil.
  4. Imágenes del Usuario 🖼️ 🖼️ 🖼️

    • Ruta: /userImages
    • Se requiere un token de autenticación para acceder a esta pantalla.
    • Muestra las imágenes subidas por el usuario.
    • Ofrece la funcionalidad para procesar una imagen y obtener los caracteres contenidos en ella.

Los servicios expuesttos para el uso de escalar el aplicativo a otros entornos son

Ruta para Cargar Imágenes por usuario📷

@images_bp.route('/add_photo_user', methods=['POST'])

Ruta para Procesar Imágenes mediante OCR 🖋️

@images_bp.route('/processImage', methods=['POST'])

Vista de Imagen procesada por el Usuario de Fibonacci 🖼️

image

:::::