Skip to content

NiengLee/20250302_PruebaTecnica

Repository files navigation

Guía para Ejecutar el Proyecto

  • Configurar el Entorno Virtual Antes de correr el proyecto, se recomienda crear un entorno virtual para aislar las dependencias.

--En Windows (CMD o PowerShell):

python -m venv venv venv\Scripts\activate

--En macOS / Linux:

python3 -m venv venv source venv/bin/activate

--Acceder al Proyecto Dirígete a la carpeta del backend:

cd 20250302_PruebaTecnica/backend

--Instalar Dependencias y Ejecutar el Proyecto Ejecuta los siguientes comandos para configurar la base de datos y correr el servidor:

pip install -r requirements.txt # Instalar dependencias python manage.py makemigrations # Generar migraciones python manage.py migrate # Aplicar migraciones python manage.py runserver # Iniciar servidor local El proyecto estará disponible en: http://127.0.0.1:8000/

--Probar la API con Postman o Thunder Client Endpoint: POST http://127.0.0.1:8000/api/app_matching/find-best-match/ Request (JSON): { "elements": [ {"nombre": "E1", "peso": 5, "calorias": 3}, {"nombre": "E2", "peso": 3, "calorias": 5}, {"nombre": "E3", "peso": 5, "calorias": 2}, {"nombre": "E4", "peso": 1, "calorias": 8}, {"nombre": "E5", "peso": 2, "calorias": 3} ], "min_calories": 15, "max_weight": 10 } Response (JSON):

{ "la mejor combinacion es": ["E2", "E4", "E5"], "best_combination": [ {"nombre": "E2", "peso": 3, "calorias": 5}, {"nombre": "E4", "peso": 1, "calorias": 8}, {"nombre": "E5", "peso": 2, "calorias": 3} ], "top_3_combinations": [ { "elements": [ {"nombre": "E2", "peso": 3, "calorias": 5}, {"nombre": "E4", "peso": 1, "calorias": 8}, {"nombre": "E5", "peso": 2, "calorias": 3} ], "total_weight": 6, "total_calories": 16 } ] }

--Persistencia de Datos Actualmente, se utiliza SQLite para la persistencia, ya que la aplicación es sencilla. Sin embargo, para proyectos más grandes, se recomienda PostgreSQL.

--Configuración en settings.py para PostgreSQL (asegurarse que la base de datos este creada en postgresql previamenete isntalada y configurada)

DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql", "NAME": "mydatabase", "USER": "mydatabaseuser", "PASSWORD": "mypassword", "HOST": "127.0.0.1", "PORT": "5432", } }

--Escalabilidad y Despliegue Para escalar la aplicación y facilitar su despliegue, se recomienda Dokku en un Droplet de DigitalOcean.

Ventajas de Dokku:

  • Configuración sencilla de proxy y Nginx.
  • Almacenamiento intuitivo.
  • Manejo de variables de entorno para mantenerlas seguras.
  • Despliegue con Dockerfile o Procfile para manejar múltiples contenedores.

Servicios recomendados para escalabilidad:

  • Redis / RabbitMQ / Celery → Para tareas asíncronas y procesamiento en segundo plano.
  • Postgresql → dokku tiene un plugin de postgresql para gestionar contenedor de postgresql en servidor
  • Frontend en ReactJS o SolidJS → Para una mejor experiencia de usuario.

Contacto Email : ncyl91@gmail.com LinkedIn: linkedin.com/in/ncyl91/ GitHub : github.com/NiengLee

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published