YumHub es una plataforma de gestión y descubrimiento de recetas desarrollada como una aplicación desacoplada. El proyecto consta de una API robusta construida con Django Rest Framework que gestiona una base de datos relacional de autores e ingredientes, y una interfaz reactiva desarrollada en Vue.js 3 con Pinia para la gestión del estado global.
|
Django 5 / DRF |
Vue.js 3 |
Tailwind v4 |
Vite |
- Python versión
3.10 o superior - Node.js versión
20 o superior(LTS recomendada) - npm versión
10 o superior
git clone <url-del-repositorio>
cd yumhubEl backend gestiona la lógica de negocio, la persistencia de datos y la exposición de endpoints REST.
- Entrar en el directorio:
cd yumhubAPI - Crear un entorno virtual de Python:
python -m venv .venv
- Activar el entorno (Windows):
.\.venv\Scripts\activate
- Instalar las dependencias necesarias:
pip install -r requirements.txt
- Realizar las migraciones de los modelos a SQLite:
python manage.py migrate
- Iniciar el servidor de desarrollo de Django:
python manage.py runserver
- Sembrado de datos: Ejecutar el script personalizado para poblar la base de datos con autores, ingredientes y recetas iniciales:
python seed_data.py
El frontend es una Single Page Application (SPA) que consume la API de DRF.
- Entrar en el directorio:
cd ../yumhubViews - Instalar dependencias mediante npm:
npm install
- Iniciar el servidor de desarrollo con Vite:
npm run dev
La aplicación utiliza un flujo de autenticación basado en el sistema de usuarios nativo de Django, pero extiende esta lógica para gestionar perfiles de Autor.
Para asegurar la integridad de los datos entre el sistema de autenticación y la lógica de negocio, se ha implementado un flujo en YumHubLogin.vue:
- El usuario se autentica mediante sus credenciales.
- Tras recibir la respuesta exitosa (Token/Sesión), el frontend realiza una petición para verificar si existe un objeto
Authorvinculado aluser_id. - Si el objeto no existe, se dispara automáticamente un
POSTal endpoint de creación de autores con la información recuperada del perfil del usuario logueado.
- Django Models: Uso de
OneToOneFieldentreUseryAuthor. - DRF Serializers: Manejo de relaciones anidadas para la creación de recetas con ingredientes.
- Pinia Store: Gestión del estado de autenticación y persistencia del perfil de autor.
flowchart TD
A[Usuario No Logueado] --> B[Registro/Login]
B --> C{Autenticación Core}
C -->|Éxito| D[Sincronización Author Profile]
D --> E[Dashboard YumHub]
E --> F[Explorar Recetas Públicas]
E --> G[Gestión Provia de Recetas]
E --> H[Panel de Favoritos]
G --> G1[Crear/Editar Receta]
G1 --> G2[Selector Dinámico de Ingredientes]
G2 --> I[(Base de Datos)]
F --> J[Visualización Detalle Receta]
J --> H
Se proporciona el script seed_data.py que utiliza la librería requests para interactuar con los endpoints de la API. Este proceso genera:
- 10 Usuarios con sus respectivos perfiles de autor sincronizados.
- 100 Ingredientes clasificados por tipo (verdura, carne, lácteo, etc.).
- 20 Recetas que vinculan dinámicamente autores e ingredientes mediante relaciones Many-to-Many.