Este repositorio contiene la resolucion del Proyecto Integrador Final de la Catedra Programación 1 de la Carrera de Desarrollo de Software de la Universidad Provincial de Administración, Tecnologia y Oficios (UPATECO). Esta consiste en una aplicacion de escritorio donde podia almacenarse recetas de cocina usando archivos csv como base de datos. Sin embargo, durante el cursado de Programación 2 se migro de ficheros csv hacia la implementacion de una base de datos MySQL actual.
Si estás interesado en ver cómo funcionaba la versión antigua de la aplicación utilizando el archivo CSV, puedes acceder a la rama "legacy" haciendo clic en el siguiente enlace: Ver la versión con ficheros CSV
Para este proyecto se deberá diseñar una aplicación de escritorio en la que puedan crear, editar y eliminar recetas.
Todos los incisos que tienen el símbolo '✅' son obligatorios, mientras que aquellos que tienen el símbolo '⭐' son opcionales.
Una receta debe estar compuesta de los siguientes datos:
- Nombre. ✅
- Una lista de los ingredientes. ✅
- Preparación, lista ordenada de pasos a seguir. ✅
- Imagen/es del plato preparado. Una receta puede o no tener una imagen. ✅
- Tiempo de preparación (en minutos). ✅
- Tiempo de cocción (en minutos). ✅
- Fecha de creación. La fecha y hora en que se creó la receta en la aplicación. ✅
- Etiquetas: palabras clave. ⭐
- Es favorita (o no). ⭐
Un ingrediente debe contar con la siguiente información:
- Nombre. ✅
- Unidad de medida. ✅
- Cantidad. ✅
Las funcionalidades que debe tener la aplicación son las siguientes:
- Crear una receta. ✅
- Modificar una receta. ✅
- Eliminar una receta. ✅
- Buscar y/o filtrar recetas:
¬ Nombre. ⭐
¬ Por etiquetas. ⭐
¬ Tiempo de preparación. ⭐
¬ Ingredientes. ⭐
Debe contar con las siguientes vistas:
- Recetario. Ventana principal por defecto.
- Se muestra un listado de todas las recetas. ✅
- Muestra una receta ya existente. ✅
- Carga/modificación de una receta. ✅
- Búsqueda y filtro. La ventana deberá tener un campo de búsqueda, por nombre y/o etiqueta. Una vez filtrados las recetas, se las mostrará en una lista.⭐
DER:
Estructura del proyecto:
.
├── images # Imagenes usadas en el proyecto
│ ├── empty_star.png # Iconos de favorito
│ └── star.png # Iconos de favorito
├── src # Modulos/Clases Auxiliares
| ├── windows # Ventanas
│ │ ├── AddIngredient.py # Ventana que agrega ingrediente
│ │ ├── AddMethod.py # Ventana que agrega paso
│ │ ├── EditRecipe.py # Ventana editar receta
│ │ ├── NewRecipe.py # Ventana crear receta
│ │ ├── ReadRecipe.py # Ventana leer receta
│ │ └── IBaseWindow.py # Base de las ventanas
│ └── utils # Controlador de la BD
│ ├── db_config.py # Credenciales
│ ├── db_migrate.py # Migracion
│ └── db_utils.py # Controlador
├── screenshots # App screenshots
├── .gitignore
├── main.py # Ventana principal
├── constant.py # Enrutador
├── requirements.txt # Dependencias
└── README.md
Crear entorno virtual
python -m venv env
Activar entorno
source env/Scripts/activate
Clonar el repositorio
git clone git@github.com:Mettralla/recetario_cocina_app.git
Ir al directorio del proyecto
cd recetario_cocina_app
Instalar dependencias
pip install -r requirements.txt
Ingresar credenciales de MYSQL
# src/utils/db_config.py
DB_CONFIG = {
'host': 'localhost',
'user': 'user',
'password': 'password',
'database': 'recipe_manager'
}
Migrar la base de datos
python src/utils/db_migrate.py
Iniciar programa
python main.py
Haz clic aquí para ver el video
- Ventana Principal
- Ventana Agregar Receta
- Ventana Editar Receta
- Ventana Ver Receta
- Python 3.10.0 - Lenguaje
- Librerias usadas:
- Tkinter - Interface de Python para Tcl/Tk
- Pillow
- MySQL
- Daniel Tejerina (@mettralla) - Linkedin