Este proyecto es una solución completa que permite a pequeñas y medianas empresas gestionar cotizaciones de productos para sus clientes. El sistema cuenta con un backend robusto desarrollado en FastAPI y una base de datos MongoDB, además de una futura integración con un frontend que ofrecerá una interfaz gráfica amigable.
El sistema permite que cada usuario cree y gestione su propio entorno de trabajo, manteniendo la información completamente aislada por autenticación. El objetivo principal es simplificar el proceso de cotización, permitiendo llevar un control centralizado de:
- Clientes registrados
- Productos y sus precios
- Cotizaciones generadas con impuestos y totales
- Historial de cotizaciones inmutable
Es ideal para empresas que requieren una solución ligera y rápida para gestionar sus cotizaciones sin depender de sistemas complejos o de terceros.
- Registro e inicio de sesión con autenticación JWT
- Gestión completa de usuarios (con campos personalizados como nombre de empresa, logo, teléfono)
- CRUD de clientes y productos
- CRUD completo de cotizaciones (crear, listar, actualizar, eliminar)
- Cada cotización conserva el valor original del producto al momento de su creación
- Generación automática de totales con impuestos
- Asociación estricta por usuario: cada entidad está ligada al usuario autenticado
- Dashboard sencillo para mostrar conteo de clientes, productos y cotizaciones
- FastAPI: API web moderna y eficiente en Python.
- MongoDB: Base de datos NoSQL escalable.
- PyMongo: Cliente para MongoDB.
- JWT: Seguridad mediante tokens.
root/
├── backend/
│ └── app/
│ ├── main.py
│ ├── routers/
│ ├── utils/
│ ├── auth/
│ └── database/
├── frontend/ (en desarrollo)
└── README.md
El backend expone múltiples endpoints RESTful organizados en rutas como /signup
, /login
, /clients
, /products
, y /quotations
. A través de estos endpoints, los usuarios pueden registrar su cuenta, autenticarse, gestionar sus clientes y productos, y generar cotizaciones.
La autenticación se realiza con tokens JWT y protege todos los recursos, asegurando que cada usuario solo acceda a su propia información.
Cuando se crea una cotización, se asocia con el cliente y productos seleccionados, guardando los precios al momento. Esto garantiza que incluso si un producto cambia de valor posteriormente, las cotizaciones antiguas permanecen fieles a su contexto original.
- Control total de cotizaciones sin depender de hojas de cálculo o software externo
- Simplicidad de uso y despliegue rápido
- Aislamiento por usuario con autenticación JWT segura
- Flexible y extensible, ideal para agregar más módulos en el futuro (como facturación, inventario, etc.)
- Preparado para integración con un frontend moderno
- Desarrollo del frontend en React u otra tecnología moderna
- Generación de PDF para cotizaciones
- Posibilidad de enviar cotizaciones por correo desde la aplicación
- Estadísticas visuales en el dashboard
Actualmente el backend está completamente funcional y listo para ser integrado con una interfaz de usuario. La estructura está diseñada para ser extensible y mantenible.
Puedes encontrar la documentación específica del backend en el archivo backend/README.md
.