Ecommerce-API-RAG-DRF es un sistema backend robusto para eCommerce que integra un asistente virtual inteligente (Chatbot RAG) capaz de responder preguntas sobre el inventario en tiempo real utilizando búsqueda semántica y modelos de lenguaje grandes.
Proyecto de finalizacion del curso de "Desarrollo de APIs con arquitectura de Microservicios". Demuestra dominio de Python, Django Rest Framework e integracion con modelos de IA (LLM) mediante RAG (Retrieval-Augmented Generation). El chatbot Techty usa busqueda semántica sobre una base de datos vectorial para dar respuestas contextuales sobre los productos de la tienda.
- API REST completa con autenticacion JWT
- Chatbot RAG con busqueda semantica de productos
- Conversion de divisas en tiempo real (USD -> VES)
- Carrito de compras y sistema de ordenes
- Documentacion interactiva con Swagger/Redoc
- Rate limiting y throttling por endpoint
graph TD
A[Root] --> B[core]
A --> C[productos]
A --> D[tienda]
A --> E[usuarios]
A --> F[chatbot]
B --> B1[settings.py]
B --> B2[urls.py]
C --> C1[Gestion de Productos/Categorias]
D --> D1[Carrito y Ordenes de Compra]
E --> E1[Gestion de Usuarios JWT]
F --> F1[Logica de IA y Vectores RAG]
F --> F2[Groq API / Llama.cpp]
F --> F3[Upstash Vector DB]
- core/: Configuracion central del proyecto Django
- productos/: Modelos y vistas para el inventario, incluyen logica de conversion de divisas
- tienda/: Gestion del flujo de compra (Carrito -> Orden -> Stock)
- usuarios/: Autenticacion personalizada con SimpleJWT
- chatbot/: Integracion con Groq/Llama.cpp y Upstash Vector para asistencia inteligente
- Python: 3.10 o superior
- pip: Ultima version
- Venv: Recomendado para aislamiento de dependencias
Opcionales:
- PostgreSQL (si deseas usar en lugar de SQLite)
- Cuenta en Groq (gratis, para el LLM)
- Cuenta en Upstash (gratis, para la base de datos vectorial)
git clone https://github.com/DaniDevGS/Ecommerce-API-RAG-DRF.git
cd Ecommerce-API-RAG-DRFpython -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activatepip install -r requirements.txtCopia el archivo de ejemplo y editalo con tus credenciales:
copy .env.example .env # Windows
cp .env.example .env # Linux/MacAbre .env y configura al menos las variables minimas:
SECRET_KEY=django-insecure-cambia-esta-clave
DEBUG=Truepython manage.py migratepython manage.py createsuperuserpython manage.py runserverEl servidor estara disponible en http://127.0.0.1:8000/
El proyecto funciona con configuracion minima (solo SECRET_KEY y DEBUG). Las variables adicionales habilitan funcionalidades extra.
| Variable | Descripcion | Ejemplo |
|---|---|---|
SECRET_KEY |
Llave secreta de Django | django-insecure-tu-clave |
DEBUG |
Modo desarrollo | True |
| Variable | Descripcion | Donde obtenerla |
|---|---|---|
GROQ_API_KEY |
API Key de Groq (gratis) | console.groq.com |
GROQ_API |
Endpoint de Groq | https://api.groq.com/openai/ |
LLAMACPP_API |
Endpoint de Llama.cpp local | http://localhost:8080/ |
| Variable | Descripcion | Donde obtenerla |
|---|---|---|
UPSTASH_VECTOR_REST_URL |
URL de Upstash Vector | console.upstash.com |
UPSTASH_VECTOR_REST_TOKEN |
Token de Upstash Vector | console.upstash.com |
| Variable | Descripcion | Ejemplo |
|---|---|---|
DATABASE_URL |
URL de conexion PostgreSQL | postgresql://user:pass@host:5432/db |
SECRET_KEY=tu_clave_aqui
DEBUG=TrueSECRET_KEY=tu_clave_aqui
DEBUG=True
GROQ_API_KEY=gsk_tu_key
GROQ_API=https://api.groq.com/openai/SECRET_KEY=tu_clave_aqui
DEBUG=True
GROQ_API_KEY=gsk_tu_key
GROQ_API=https://api.groq.com/openai/
UPSTASH_VECTOR_REST_URL=https://tu-vector.upstash.io
UPSTASH_VECTOR_REST_TOKEN=tu_token| Metodo | Endpoint | Auth | Descripcion |
|---|---|---|---|
GET |
/ |
No | Swagger UI (documentacion interactiva) |
POST |
/api/auth/login/ |
No | Login y obtener JWT |
POST |
/api/auth/refresh/ |
No | Refrescar token JWT |
POST |
/api/usuario/ |
No | Registrar usuario |
GET |
/api/usuario/ |
Admin | Listar usuarios |
GET |
/api/productos/ |
No | Listar/filtrar productos |
GET |
/api/productos/<id>/ |
No | Detalle de producto |
GET |
/api/categorias/ |
No | Listar categorias |
GET |
/api/subcategorias/ |
No | Listar subcategorias |
GET |
/api/carritos/ |
JWT | Ver mi carrito |
POST |
/api/items-carrito/ |
JWT | Agregar item al carrito |
PATCH |
/api/items-carrito/<id>/ |
JWT | Editar item del carrito |
DELETE |
/api/items-carrito/<id>/ |
JWT | Eliminar item del carrito |
POST |
/api/ordenes-compra/ |
JWT | Crear orden desde el carrito |
GET |
/api/ordenes-compra/ |
JWT | Listar mis ordenes |
POST |
/api/chatbot/ |
JWT | Preguntar al chatbot (RAG) |
GET |
/api/chatbot/ |
JWT | Ver historial de chat |
curl -X POST http://127.0.0.1:8000/api/auth/login/ \
-H "Content-Type: application/json" \
-d '{"username": "tu_usuario", "password": "tu_password"}'curl -X POST http://127.0.0.1:8000/api/chatbot/ \
-H "Authorization: Bearer tu_token_jwt" \
-H "Content-Type: application/json" \
-d '{"pregunta": "Que laptops tienen disponibles?"}'backend/
├── core/ # Configuracion Django (settings, urls, wsgi)
├── productos/ # Modelos: Categoria, Subcategoria, Producto
├── tienda/ # Modelos: Carrito, ItemCarrito, OrdenCompra
├── usuarios/ # Gestion de usuarios con JWT
├── chatbot/ # RAG: rag.py (LLM), vectors.py (Upstash)
├── media/ # Archivos multimedia subidos
├── requirements.txt # Dependencias Python
├── .env_example # Template de variables de entorno
└── manage.py # Comandos de Django
| Componente | Tecnologia | Version |
|---|---|---|
| Framework | Django | 5.2 |
| API REST | Django REST Framework | 3.16 |
Este proyecto esta bajo la licencia de Uso Personal Unicamente. No esta permitida la distribucion, venta o uso en entornos de produccion. Consulta el archivo LICENSE para mas detalles.
