¡Bienvenido a Flask Sandwich Shop! Una aplicación web desarrollada con Flask que permite a los usuarios pedir sándwiches personalizados.
Esta aplicación presenta un menú de sándwiches, permite a los clientes personalizar sus pedidos y guarda la orden en un archivo local. Es un proyecto de demostración para ilustrar los fundamentos del desarrollo web con el framework Flask en Python.
El proyecto está organizado de la siguiente manera para separar las responsabilidades:
/
├── .gitignore # Archivos y directorios ignorados por Git
├── app.py # Lógica principal de la aplicación Flask (rutas y vistas)
├── models.py # Clases y modelos de datos (p. ej., Sandwich, Ingrediente)
├── requirements.txt # Lista de dependencias de Python
├── install_dependencies.py # Script para instalar dependencias
├── templates/ # Plantillas HTML (usando Jinja2)
│ └── ...
├── static/ # Archivos estáticos (CSS, JavaScript, imágenes)
│ └── ...
├── purchases.json # Archivo para almacenar los pedidos realizados
└── README.md # Este archivo
A continuación se muestra un diagrama de flujo simple que representa la interacción entre el usuario y el sistema.
graph TD
A[Usuario] -->|Abre el navegador| B(Visita la página principal);
B --> C{¿Ver menú?};
C -->|Sí| D[La aplicación muestra la lista de sándwiches];
D --> E{¿Selecciona un sándwich?};
E -->|Sí| F[La aplicación muestra detalles y opciones de personalización];
F --> G{¿Confirma el pedido?};
G -->|Sí| H[La aplicación procesa el pedido];
H --> I[Guarda la información en `purchases.json`];
I --> J[Muestra una página de confirmación];
J --> A;
Sigue estas instrucciones paso a paso para poner en marcha el proyecto en tu máquina local.
Asegúrate de tener instalado lo siguiente:
- Python 3.8 o superior - Descargar Python
- Git - Descargar Git
- pip (gestor de paquetes de Python - incluido con Python)
Opción A: Clonar directamente
git clone https://github.com/TodoEconometria/sandwicheria.git
cd sandwicheriaOpción B: Hacer Fork y clonar tu copia
- Haz clic en el botón "Fork" en la parte superior derecha de este repositorio en GitHub
- Clona tu fork:
git clone https://github.com/TU_USUARIO/sandwicheria.git
cd sandwicheriaEs importante usar un entorno virtual para mantener las dependencias del proyecto aisladas.
En Windows:
# Crear entorno virtual
python -m venv venv
# Activar entorno virtual
venv\Scripts\activateEn macOS/Linux:
# Crear entorno virtual
python3 -m venv venv
# Activar entorno virtual
source venv/bin/activateNota: Cuando el entorno virtual está activado, verás (venv) al inicio de tu línea de comandos.
Con el entorno virtual activado, instala las dependencias necesarias:
Método recomendado (usando requirements.txt):
pip install -r requirements.txtMétodo alternativo (usando el script):
python install_dependencies.pyUna vez que las dependencias estén instaladas y el entorno virtual esté activado, inicia el servidor de desarrollo:
En Windows:
flask --app app run --debugEn macOS/Linux:
flask --app app run --debugEl modo --debug reiniciará automáticamente el servidor cada vez que realices un cambio en el código.
¡Listo! Abre tu navegador y visita: http://127.0.0.1:5000
Detener el servidor:
Presiona Ctrl + C en la terminal donde está corriendo el servidor.
Desactivar el entorno virtual:
deactivateActualizar dependencias:
pip install --upgrade -r requirements.txt- Inicio: El servidor se inicia ejecutando
app.py. Este archivo define las rutas (URLs) de la aplicación. - Modelos:
models.pycontiene las clases que representan los datos de la aplicación, comoSandwicheIngredient. Estos modelos se utilizan para gestionar la lógica de negocio. - Rutas y Vistas: Cuando un usuario visita una URL, Flask invoca la función de vista asociada a esa ruta en
app.py. - Renderizado de Plantillas: La función de vista recopila los datos necesarios (por ejemplo, una lista de sándwiches) y los pasa a una plantilla HTML en el directorio
templates/. - Interacción del Usuario: El usuario interactúa con la página (por ejemplo, enviando un formulario para hacer un pedido).
- Procesamiento de Datos: Flask recibe los datos del formulario, los procesa y, en este caso, guarda el pedido en el archivo
purchases.json. - Respuesta: Finalmente, la aplicación devuelve una nueva página al usuario, como una confirmación del pedido.