Skip to content

Starkware-713/e-comerce-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛒 E-Commerce Backend API

🚀 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).


📚 Tabla de Contenidos


🌐 Despliegue y Documentación


🧩 Descripción General

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

⚙️ Requisitos Previos

  • Python 3.9+
  • PostgreSQL
  • Git

🛠️ Instalación

# 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 .env

Ejemplo .env:

DATABASE_URL=postgresql://usuario:contraseña@localhost/nombre_db
PORT=8000
EMAIL_ADDRESS=your-email@gmail.com
EMAIL_PASSWORD=your-email-password

▶️ Ejecutar la Aplicación

uvicorn main:app --reload

Ir a http://localhost:8000/docs para explorar la documentación interactiva.


🧪 Autenticación

🔐 Registro

POST /auth/register
{
  "email": "usuario@ejemplo.com",
  "password": "Contraseña123!",
  "confirm_password": "Contraseña123!",
  "name": "Nombre",
  "lastname": "Apellido",
  "rol": "comprador"
}

🔓 Login

POST /auth/login

Respuesta:

{
  "access_token": "...",
  "refresh_token": "...",
  "token_type": "bearer"
}

👤 Gestión de Usuario

  • Obtener perfil: GET /user/my-profile
  • Actualizar perfil: PUT /user/update-profile
  • Cambiar contraseña: POST /user/change-password

🛍️ Gestión de Productos

  • 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}

🛒 Carrito

  • Ver carrito: GET /cart
  • Agregar: POST /cart/add
  • Actualizar: PUT /cart/update
  • Eliminar: DELETE /cart/remove/{product_id}

📦 Órdenes

  • Crear orden: POST /orders
  • Listar órdenes: GET /orders
  • Ver orden: GET /orders/{order_id}

💳 Pagos (simulado)

  • Procesar: POST /payment/process

🧾 Validaciones

Contraseña:

  • Mínimo 8 caracteres
  • Al menos una mayúscula, una minúscula, un número y un símbolo

Roles permitidos:

  • comprador
  • vendedor
  • jefe_ventas

📦 Modelo de Datos

Modelo de Datos

Entidades Principales

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

🔐 Seguridad

  • 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

📁 Estructura del Proyecto

.
├── app/
│   ├── models/ #Modelos 
│   ├── routers/ #Rutas
│   ├── schemas/ # Esquemas de la base de datos
│   ├── utils/ #funcionalidades en general
│   └── database.py
├── main.py
├── requirements.txt
└── docs/

🧠 Recomendaciones

  • Implementar interceptores HTTP en el frontend
  • Centralizar manejo de errores
  • Usar caché para productos populares
  • Guardar carrito en localStorage
  • Utilizar debounce en el buscador

📌 Estado del Proyecto

🚧 En desarrollo activo. Versión actual: 1.0.0


🙌 Créditos

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.


📝 Licencia

Este proyecto se distribuye bajo licencia educativa con fines exclusivamente académicos y formativos en el marco de las Olimpiadas ETP 2025.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages