Fucsia Boutique es una aplicación web desarrollada con Python y Django para la gestión comercial de un negocio de venta de ropa. El sistema permite administrar productos, categorías, inventario, ventas, usuarios y reportes, con conexión a base de datos MySQL.
Diseñar y desarrollar una aplicación funcional que permita controlar productos, ventas, aplicando el uso de Python, Django, base de datos y operaciones CRUD.
- Python 3.x
- Django 4.2.11
- MySQL
- HTML
- CSS
- JavaScript
- Bootstrap Icons / Boxicons
- Pandas
- OpenPyXL
Permite visualizar información general del sistema y acceder rápidamente a las secciones principales.
Permite gestionar el catálogo de productos. Incluye creación, edición, eliminación, búsqueda y filtros por categoría o estado de stock.
Permite controlar el stock de los productos. Incluye visualización de productos disponibles, productos con stock bajo, productos sin stock y valor total del inventario.
Permite registrar movimientos de inventario mediante entradas, salidas o correcciones de stock. Cada ajuste guarda un historial con el producto, tipo de movimiento, motivo, cantidad, stock anterior, stock nuevo, observación y fecha.
Permite registrar ventas de productos, descontando automáticamente la cantidad vendida del inventario.
Permite gestionar usuarios del sistema, incluyendo usuarios administradores y vendedores.
Permite exportar reportes de ventas en formato Excel.
Antes de ejecutar el proyecto, se debe tener instalado:
- Python 3.x
- MySQL Server
- MySQL Workbench
- Git
Clonar el repositorio:
git clone https://github.com/contactodexstevqn-gif/ProyectoFinal.git
Entrar a la carpeta del proyecto:
cd ProyectoFinal
Crear un entorno virtual:
python -m venv venv
Activar el entorno virtual en Windows:
venv\Scripts\activate
Instalar las dependencias del proyecto:
pip install -r requirements.txt
El proyecto utiliza MySQL como sistema gestor de base de datos.
Crear una base de datos en MySQL:
CREATE DATABASE prueba CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Verificar en el archivo backend/settings.py que la configuración de la base de datos coincida con la configuración local:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'prueba',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306',
}
}
Si el usuario de MySQL tiene contraseña, se debe colocar en el campo PASSWORD.
Aplicar las migraciones para crear las tablas en la base de datos:
python manage.py makemigrations
python manage.py migrate
Crear un superusuario para acceder al panel de administración de Django:
python manage.py createsuperuser
Luego seguir las instrucciones de la terminal para ingresar usuario, correo y contraseña.
Ejecutar el servidor de desarrollo:
python manage.py runserver
Abrir el navegador en:
http://127.0.0.1:8000/
Panel de administración de Django:
http://127.0.0.1:8000/admin/
- Iniciar sesión con un usuario registrado.
- Ingresar al módulo de productos para crear categorías y productos.
- Revisar el inventario para consultar productos disponibles, productos con stock bajo y productos sin stock.
- Usar la opción de ajustar stock para registrar entradas, salidas o correcciones.
- Registrar ventas desde el módulo correspondiente.
- Consultar reportes y exportaciones en Excel.
El sistema permite realizar operaciones CRUD en diferentes módulos:
- Crear, listar, editar y eliminar productos.
- Crear y consultar categorías.
- Crear y gestionar usuarios.
- Registrar y consultar ventas.
- Registrar y consultar movimientos de inventario.
ProyectoFinal/
├── backend/
├── productos/
├── usuarios/
├── ventas/
├── static/
├── templates/
├── manage.py
├── requirements.txt
└── README.md
Archivo principal para ejecutar comandos de Django como migraciones, servidor y creación de usuarios.
Archivo de configuración principal del proyecto. Contiene la configuración de aplicaciones instaladas, base de datos, archivos estáticos y zona horaria.
Carpeta donde se encuentran las plantillas HTML del sistema.
Carpeta donde se encuentran los archivos CSS, JavaScript e imágenes utilizadas en la interfaz.
Aplicación encargada de gestionar productos, categorías, inventario y movimientos de stock.
Aplicación encargada de registrar ventas y consultar información relacionada.
Aplicación encargada de la gestión de usuarios, login y permisos del sistema.
El proyecto está conectado a una base de datos MySQL. Para la entrega final se recomienda incluir una exportación de la base de datos en formato .sql.
Nombre sugerido del archivo:
fucsia_boutique.sql
Ubicación recomendada:
database/fucsia_boutique.sql
Para restaurar la base de datos desde consola:
mysql -u root -p prueba < database/fucsia_boutique.sql
Si el usuario root no tiene contraseña:
mysql -u root prueba < database/fucsia_boutique.sql
El archivo requirements.txt debe incluir las librerías necesarias para ejecutar el proyecto.
Ejemplo:
Django==4.2.11
mysqlclient
pandas
openpyxl
python-dotenv
También se puede generar automáticamente con:
pip freeze > requirements.txt
Si se utiliza un archivo .env, se puede crear un archivo .env.example para documentar las variables necesarias:
SECRET_KEY=django-insecure-cambia-esta-clave
DEBUG=True
DB_NAME=prueba
DB_USER=root
DB_PASSWORD=
DB_HOST=localhost
DB_PORT=3306
El sistema permite exportar reportes en formato Excel, utilizando las librerías Pandas y OpenPyXL.
Para la entrega final se debe incluir una grabación de máximo 10 minutos explicando el funcionamiento del sistema.
El video debe evidenciar:
- Ejecución del servidor Django.
- Inicio de sesión.
- Gestión de productos.
- Control de inventario.
- Ajuste de stock.
- Registro de ventas.
- Exportación de reportes.
- Conexión con base de datos.
Ubicación recomendada:
video/sustentacion_fucsia_boutique.mp4
No incluir carpetas innecesarias en el archivo comprimido final:
venv/
.git/
__pycache__/
El archivo .zip final debería incluir:
ProyectoFinal/
├── backend/
├── productos/
├── usuarios/
├── ventas/
├── static/
├── templates/
├── database/
├── video/
├── .env.example
├── .gitignore
├── README.md
├── requirements.txt
└── manage.py
Proyecto académico desarrollado para el curso Herramientas Computacionales.
- Freddy Castro
- Stiven Mendoza
- Santiago Vasquez
- Keiner Perez