Este proyecto es una aplicación web dinámica diseñada para gestionar varios aspectos de una cafeteria, incluyendo la administración de usuarios, productos, mesas, reservas, y facturación. Ofrece un flujo completo para usuarios autenticados, desde agregar productos a un carrito hasta completar un proceso de checkout con generación de facturas en PDF.
- Gestión dinámica de secciones como "Nosotros" e "Historia".
- CRUD para usuarios, productos, mesas y reservas.
- Carrito de compras integrado con proceso de pago y generación de facturas.
- Administración de menú y categorías de productos
- Funcionalidades específicas para roles administrativos, como liberar mesas y generar reportes.
- Recuperación y actualización de contraseñas con tokens seguros.
- API modular basada en Flask, con endpoints organizados para facilitar futuras expansiones.
- Backend: Flask (Python).
- Base de datos: MySQL.
- Frontend: Jinja2 para plantillas dinámicas.
- Dependencias adicionales: Generación de PDFs, conexión segura a bases de datos y manejo de sesiones.
- GET
/mi-nosotros
: Muestra la lista de información de "Nosotros". - GET
/editar-nosotros/<int:id>
: Carga el formulario para editar un elemento específico de "Nosotros". - POST
/actualizar-nosotro
: Recibe datos para actualizar un elemento de "Nosotros".
- GET
/mi-historia
: Muestra la información de "Historia". - GET
/editar-historia/<int:id_titulos>/<int:id_imagenes>/<int:id_parrafos>
: Carga el formulario para editar la "Historia". - POST
/actualizar-historia
: Actualiza la información de la "Historia".
- GET
/registrar-producto
: Carga el formulario para registrar un producto. - POST
/form-registrar-producto
: Recibe datos para registrar un nuevo producto. - GET
/lista-de-productos
: Lista todos los productos disponibles. - POST
/buscando-producto
: Busca productos en la base de datos. - GET
/editar-producto/<int:id>
: Carga el formulario para editar un producto específico. - POST
/actualizar-producto
: Actualiza los datos de un producto. - GET
/borrar-producto/<string:id_producto>/<string:foto_producto>
: Elimina un producto y su imagen asociada.
- GET
/lista-de-usuarios
: Lista todos los usuarios registrados. - GET
/editar-usuario/<int:id>
: Carga el formulario para editar un usuario específico. - POST
/actualizar-usuario
: Actualiza los datos de un usuario. - GET
/borrar-usuario/<string:id>
: Elimina un usuario. - POST
/buscando-usuario
: Busca usuarios en la base de datos.
- GET
/registrar-mesa
: Carga el formulario para registrar una mesa. - POST
/form-registrar-mesa
: Recibe datos para registrar una nueva mesa. - GET
/lista-de-mesas
: Lista todas las mesas disponibles. - POST
/buscando-mesa
: Busca mesas en la base de datos. - GET
/editar-mesa/<int:id>
: Carga el formulario para editar una mesa específica. - POST
/actualizar-mesa
: Actualiza los datos de una mesa. - GET
/borrar-mesa/<string:id_mesa>
: Elimina una mesa.
- GET
/lista-de-reservas
: Lista todas las reservas. - GET
/lista-de-reservasUser
: Lista reservas específicas de un usuario. - POST
/form-registrar-reserva
: Registra una nueva reserva. - GET
/liberar-mesa/<int:id_mesa>
: Libera una mesa ocupada.
- GET
/agregar-al-carrito/<int:id_producto>
: Agrega un producto al carrito. - GET
/carrito
: Muestra el contenido del carrito. - POST
/actualizar_cantidad/<int:id_producto>
: Actualiza la cantidad de un producto en el carrito. - GET
/eliminar_del_carrito/<int:id_producto>
: Elimina un producto del carrito.
- GET
/lista-de-facturas
: Lista todas las facturas. - GET
/factura_exito/<int:factura_id>
: Muestra el detalle de una factura específica. - GET
/factura_pdf/<int:factura_id>
: Genera un PDF de una factura.
- Python 3.8.5 (especificado en
runtime.txt
). - MySQL Server instalado y configurado.
- Administrador de paquetes
pip
para instalar las dependencias desderequirements.txt
.
-
Clonar el repositorio:
git clone https://github.com/Barcodehub/CoffeeFlask.git
-
Instalar las dependencias: Asegúrate de estar en un entorno virtual antes de instalar:
python -m venv venv venv\Scripts\activate pip install -r requirements.txt
-
Configurar las variables de entorno: Crea un archivo .env en la raíz del proyecto con el siguiente contenido:
DB_HOST=localhost DB_USER=tu_usuario DB_PASSWORD=tu_contraseña DB_NAME=nombre_de_la_base_datos DB_PORT=3306 SECRET_KEY=clave_secreta_segura
Asegúrate de reemplazar tu_usuario, tu_contraseña, y nombre_de_la_base_datos con las credenciales correctas.
- Configurar la base de datos:
- Crea la base de datos en MySQL.
- Ejecutar la aplicación en localhost
La aplicación estará disponible en http://localhost:5000.
- (Opcional) entorno de producción: La aplicación está lista para ser desplegada en un entorno de producción como Railway
La documentación completa del proyecto está disponible en este PDF.
Para ver una demostración de la aplicación en funcionamiento, puedes ver este video: