🚀 Proyecto desarrollado como parte de la Instancia Institucional de las Olimpiadas Nacionales de Educación Técnico Profesional (ETP) 2025, en el área de Programación, siguiendo los lineamientos del documento oficial del certamen (INET).
- 🌐 Despliegue y Documentación
- 🧩 Descripción General
- ⚙️ Requisitos Previos
- 🛠️ Instalación
▶️ Ejecutar la Aplicación- 🧪 Autenticación
- 👤 Gestión de Usuario
- 🛍️ Gestión de Productos
- 🛒 Carrito
- 📦 Órdenes
- 💳 Pagos (simulado)
- 🧾 Validaciones
- 📦 Modelo de Datos
- 🔐 Seguridad
- 📁 Estructura del Proyecto
- 🧠 Recomendaciones
- 📌 Estado del Proyecto
- 🙌 Créditos
- 📝 Licencia
- 🔗 Producción: https://e-comerce-backend-kudw.onrender.com
- 📘 Swagger UI: https://e-comerce-backend-kudw.onrender.com/docs
- 📕 ReDoc: https://e-comerce-backend-kudw.onrender.com/redoc
API REST para la gestión completa de un sistema de e-commerce. Incluye:
- 🔐 Autenticación con JWT y Refresh Tokens
- 👥 Gestión de usuarios (comprador, vendedor, jefe de ventas)
- 🛍️ Catálogo de productos con filtros de búsqueda
- 🛒 Carrito de compras persistente
- 📦 Procesamiento y seguimiento de órdenes
- 💳 Pagos simulados con Mercado Pago
- 📚 Documentación generada automáticamente con Swagger / OpenAPI
- Python 3.9+
- PostgreSQL
- Git
# 1. Clonar el repositorio
git clone https://github.com/Starkware-713/e-comerce-backend
cd e-comerce-backend
# 2. Crear y activar entorno virtual
python -m venv .venv
# Linux/macOS
source .venv/bin/activate
# Windows
.venv\Scripts\activate
.venv\Scripts\Activate.ps1 #script para activar el entorno virtual usando Microsoft Powershell
# 3. Instalar dependencias
pip install -r requirements.txt
# 4. Configurar variables de entorno
cp .env.example .envEjemplo .env:
DATABASE_URL=postgresql://usuario:contraseña@localhost/nombre_db
PORT=8000
EMAIL_ADDRESS=your-email@gmail.com
EMAIL_PASSWORD=your-email-passworduvicorn main:app --reloadIr a http://localhost:8000/docs para explorar la documentación interactiva.
POST /auth/register{
"email": "usuario@ejemplo.com",
"password": "Contraseña123!",
"confirm_password": "Contraseña123!",
"name": "Nombre",
"lastname": "Apellido",
"rol": "comprador"
}POST /auth/loginRespuesta:
{
"access_token": "...",
"refresh_token": "...",
"token_type": "bearer"
}- Obtener perfil:
GET /user/my-profile - Actualizar perfil:
PUT /user/update-profile - Cambiar contraseña:
POST /user/change-password
- Listar productos:
GET /products - Buscar productos:
GET /products/search?q=... - Crear producto:
POST /products(solo vendedores o jefe de ventas) - Obtener por ID:
GET /products/{id}
- Ver carrito:
GET /cart - Agregar:
POST /cart/add - Actualizar:
PUT /cart/update - Eliminar:
DELETE /cart/remove/{product_id}
- Crear orden:
POST /orders - Listar órdenes:
GET /orders - Ver orden:
GET /orders/{order_id}
- Procesar:
POST /payment/process
Contraseña:
- Mínimo 8 caracteres
- Al menos una mayúscula, una minúscula, un número y un símbolo
Roles permitidos:
compradorvendedorjefe_ventas
| Entidad | Atributos |
|---|---|
| Usuario | ID, Nombre, Apellido, Email, Contraseña, Rol, Estado |
| Producto | ID, Nombre, Descripción, Precio, Stock, Categoría, Vendedor ID |
| Carrito | ID, Usuario ID, Items, Total, Estado |
| Orden | ID, Usuario ID, Items, Total, Estado, Fechas |
| Pago | ID, Orden ID, Monto, Método, Estado, Fecha |
| Venta | ID, Orden ID, Factura, Total, IVA, Estado, Fecha |
-
Autenticación con JWT + Refresh Tokens
-
Middleware de autorización basado en roles:
- 👤 Comprador: acceso a órdenes y carrito
- 🏪 Vendedor: gestión de productos y ventas
- 👑 Jefe de ventas: acceso total al sistema
.
├── app/
│ ├── models/ #Modelos
│ ├── routers/ #Rutas
│ ├── schemas/ # Esquemas de la base de datos
│ ├── utils/ #funcionalidades en general
│ └── database.py
├── main.py
├── requirements.txt
└── docs/- Implementar interceptores HTTP en el frontend
- Centralizar manejo de errores
- Usar caché para productos populares
- Guardar carrito en
localStorage - Utilizar debounce en el buscador
🚧 En desarrollo activo. Versión actual: 1.0.0
Desarrollado por Walter Carrasco, estudiante de 7mo año de ETP en la Escuela N.º 713 'Juan Abdala Chayep', Esquel, Chubut. Participación en la Olimpíada Nacional INET 2025 – Área Programación.
Este proyecto se distribuye bajo licencia educativa con fines exclusivamente académicos y formativos en el marco de las Olimpiadas ETP 2025.
