Autor: Ronaldo Cahuasiri Colque
Aplicación web de administración desarrollada con Flask y Flask-AppBuilder para la gestión de Categorías y Productos, incluyendo carga de imágenes, autenticación de usuarios y panel administrativo tipo dashboard.
Este sistema permite administrar de forma eficiente un catálogo de productos organizado por categorías, con funcionalidades completas de CRUD y soporte para imágenes.
Está construido utilizando Flask-AppBuilder, lo que proporciona una interfaz administrativa automática, control de usuarios y una arquitectura escalable basada en SQLAlchemy.
- CRUD completo de Categorías
- CRUD completo de Productos
- Carga de imágenes para categorías y productos
- Visualización de imágenes en listados
- Autenticación de usuarios
- Control de acceso por roles (Administrador / Usuario)
- Interfaz administrativa generada automáticamente
- Arquitectura modular y escalable
- Python 3.12+
- Flask
- Flask-AppBuilder
- SQLAlchemy
- MySQL 8+
- WTForms
- Jinja2
- MarkupSafe
- Python 3.12 o superior
- MySQL 8.0 o superior
- pip actualizado
Clonar el repositorio:
git clone <url-del-repositorio> cd dashboard-app
Crear entorno virtual:
Windows:
python -m venv env env\Scripts\activate
Linux / Mac:
python3 -m venv env source env/bin/activate
Instalar dependencias:
pip install -r requirements.txt
Crear la base de datos en MySQL:
CREATE DATABASE dashboardapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Configurar conexión en config.py:
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://usuario:contraseña@localhost/dashboardapp"
Crear usuario administrador:
flask fab create-admin
Ejecutar la aplicación:
python run.py
Abrir en el navegador:
http://localhost:8080
Para cargar datos de prueba:
python seeders.py
Este script inserta:
- 5 categorías
- 20 productos
Además evita duplicados en cada ejecución.
dashboard-app/ ├── app/ │ ├── __init__.py (Factory de la aplicación) │ ├── extensions.py (DB y AppBuilder) │ ├── models.py (Modelos de datos) │ ├── views.py (Vistas CRUD) │ └── static/ │ └── uploads/ (Imágenes subidas) │ ├── config.py (Configuración general) ├── run.py (Punto de entrada) ├── seeders.py (Datos de prueba) ├── requirements.txt └── README.rst
- id: Identificador único
- nombre: Nombre de la categoría
- descripcion: Descripción de la categoría
- imagen: Ruta de imagen
- estado: Activo / Inactivo
- creado_en: Fecha de creación
- actualizado_en: Fecha de actualización
- id: Identificador único
- nombre: Nombre del producto
- descripcion: Descripción del producto
- precio: Precio del producto
- categoria_id: Relación con Categoria
- imagen: Ruta de imagen
- estado: Activo / Inactivo
- creado_en: Fecha de creación
- actualizado_en: Fecha de actualización
- Las imágenes se almacenan en
app/static/uploads/ - Flask-AppBuilder genera automáticamente los formularios desde los modelos
- El sistema está preparado para ampliación con nuevos módulos
- Se recomienda usar entornos virtuales para desarrollo
Ronaldo Cahuasiri Colque Sistema desarrollado con fines académicos