$cd/projects/shopup
🚧 En Desarrollo Activo
Backend
📅 Sprint 4/∞

ShopUp - Plataforma E-commerce con Microservicios

Plataforma integral de comercio electrónico con arquitectura de microservicios, funcionalidades potenciadas por IA y autenticación basada en roles para pequeñas y medianas empresas.

Agosto 2024 - Presente (Sprint 8/∞ - En desarrollo activo)
Proyecto Final ISI - Equipo de 4 desarrolladores
25 tecnologías
Ver Demo

$ cat tech-stack.json

Características destacadas

Arquitectura de microservicios con Spring Cloud Gateway
Funcionalidades IA: carga de voz, búsqueda semántica, embeddings
Autenticación basada en roles con Keycloak (emprendedor, comprador, admin)
Autorización a nivel de recursos con comparación UUID JWT
Arquitectura hexagonal con separación limpia de responsabilidades
Actualizaciones dirigidas por eventos para indexación de búsqueda
Procesamiento de audio en tiempo real con API Whisper
Integración completa de pagos con MercadoPago
Sistema de carrito de compras y gestión de pedidos
Geolocalización de negocios con integración Google Maps

Stack tecnológico

Java 24
Spring Boot 3.4+
Spring Cloud Gateway
Spring Security
Spring Data JPA
PostgreSQL
OpenSearch
Keycloak
React 19
Vite
Material-UI v7
Redux Toolkit
Python
FastAPI
OpenAI API
Whisper
Embeddings
Docker
Docker Compose
Nginx
Maven
Swagger/OpenAPI
JWT
MercadoPago API
Google Maps API

🎯 Problema

Las pequeñas y medianas empresas necesitan una plataforma integral para gestionar catálogos de productos, aumentar visibilidad, manejar ventas y construir confianza del cliente a través de calificaciones y reseñas, con asistencia IA para experiencia de usuario mejorada.

💡 Solución

Plataforma de comercio electrónico basada en microservicios con funcionalidades potenciadas por IA incluyendo procesamiento de carga de voz, búsqueda semántica con embeddings, sistema de autenticación basado en roles e integración de pagos en tiempo real a través de API MercadoPago.

📊 Impacto

Solución completa de marketplace que permite a emprendedores gestionar sus negocios eficientemente mientras proporciona a compradores capacidades avanzadas de búsqueda y experiencia de compra fluida con descubrimiento de productos mejorado por IA.

$ git log --oneline --graph sprints/

Progreso de desarrollo organizado en sprints ágiles con historias de usuario específicas y entregables

Sprint 1: Sprint 1 - Fundación y Autenticación
Completado
Sprint 2: Sprint 2 - Lógica de Negocio Central
Completado
Sprint 3: Sprint 3 - Integración IA y Funcionalidades de Voz
Completado
Sprint 4: Sprint 4 - Gestión de Productos
Completado
Sprint 5: Sprint 5 - Gestión de Catálogos y Mejoras de Voz
Completado
Sprint 6: Sprint 6 - Carrito de Compras y Experiencia del Comprador
Completado
Sprint 7: Sprint 7 - Integración de Pagos y Mejoras UX
Completado
Sprint 8: Sprint 8 - Gestión de Ventas y Geolocalización
ACTUAL
En Progreso

📋 User Stories:

  • Registro automático de ventas cuando compradores completan compras
  • SPIKE: Implementación personalizada Google Maps para geolocalización de negocios
  • Funcionalidad de búsqueda de negocios para compradores con conciencia de ubicación
  • Vista completa de tienda emprendedora usando especificaciones de diseño de Fede
  • Vista de consulta de ventas para emprendedores con analíticas
  • Vista de consulta de ventas para compradores con historial de pedidos

🔧 Logros Técnicos:

Implementación de sistema de registro automático de ventas
Integración personalizada Google Maps para servicios de ubicación de negocios
Funcionalidad de búsqueda de negocios con filtrado basado en ubicación
Vistas completas de consulta de ventas para todos los roles de usuario

🎯 Foco Actual:

  • Integración API Google Maps y componentes de mapa personalizados
  • Automatización de flujo de trabajo de ventas y procesamiento de pedidos
  • Algoritmos de descubrimiento de negocios basados en ubicación
  • UI/UX mejorado para gestión de tiendas y ventas
Sprint 8/∞En desarrollo...

📊 Estadísticas de Desarrollo

7
Sprints Completados
1
En Progreso
35
User Stories Total
16
Semanas de Desarrollo

$ docker-compose ps --services

Arquitectura distribuida de microservicios con API Gateway centralizado, servicios especializados y bases de datos dedicadas. Implementa patrones de Diseño Dirigido por Dominio y arquitectura hexagonal para mantenibilidad y escalabilidad.

🏗️ Arquitectura de Microservicios

Gateway Layer

API Gateway
:8080
• Enrutamiento
• Autenticación JWT
• Rate Limiting

Services Layer

Core Service
:8081
• Emprendimientos
• Productos
• Arquitectura Hexagonal
AI Service
:8082
• Audio-to-Text
• Embeddings
• Búsqueda Semántica

Data Layer

PostgreSQL
:5432
• Datos principales
• Triggers
OpenSearch
:9200
• Búsquedas vectoriales
• Embeddings
Keycloak
:8083
• OAuth2/JWT
• Gestión usuarios
Backend
Java 24
Spring Boot 3.4+
Spring Cloud Gateway
Spring Security
Spring Data JPA
Database
PostgreSQL
OpenSearch
Security
Keycloak
JWT
Frontend
React 19
Vite
Material-UI v7
Redux Toolkit
AI/ML
Python
FastAPI
OpenAI API
Whisper
Embeddings
DevOps
Docker
Docker Compose
Nginx
Maven
Swagger/OpenAPI
Other
MercadoPago API
Google Maps API
🔌 Integraciones Externas
Keycloak para gestión de identidad y acceso con tokens JWT
PostgreSQL como base de datos primaria para servicio Core
OpenSearch para búsqueda de productos y almacenamiento de embeddings
API OpenAI para funcionalidades IA y procesamiento de voz
API MercadoPago para procesamiento de pagos con manejo de webhooks
API Google Maps para geolocalización y descubrimiento de negocios
Docker y Docker Compose para contenerización
Nginx para servir activos estáticos en producción

$ kubectl get services --all-namespaces

Deep dive en cada microservicio y sus responsabilidades específicas

API Gateway (Spring Cloud Gateway)
Servicio Core (Microservicio Principal)
Servicio AI (Microservicio de IA)

$ find . -name "*.java" -o -name "*.py" | head -5

Snippets de código real del proyecto - implementaciones clave

Configuración de Filtros JWT en Gateway
properties
API Gateway (Spring Cloud Gateway)

Configuración de filtros que permiten autorización granular comparando UUIDs del path/query con claims JWT

# Filtro para emprendimientos y productos con UUID en path
shopup.gateway.filter.jwt-id-match.rules[0].name="EmprendimientoProductoGeneralPathUUID"
shopup.gateway.filter.jwt-id-match.rules[0].pathRegex=".*/(emprendimientos|productos)(?:/[a-zA-Z0-9_\\-]+)?/([a-fA-F0-9\\-]{36})(?:/.*)?$"
shopup.gateway.filter.jwt-id-match.rules[0].extractionStrategy=PATH_REGEX_GROUP
shopup.gateway.filter.jwt-id-match.rules[0].pathRegexGroupId=2
shopup.gateway.filter.jwt-id-match.rules[0].jwtClaimName="sub"

# Filtro para productos por query param
shopup.gateway.filter.jwt-id-match.rules[1].pathRegex=".*/productos$"
shopup.gateway.filter.jwt-id-match.rules[1].extractionStrategy=QUERY_PARAM
shopup.gateway.filter.jwt-id-match.rules[1].queryParamName="idEmprendimiento"

🔍 Contexto del Código:

Servicio: API Gateway (Spring Cloud Gateway)

Descripción: Punto único de entrada para todas las solicitudes de cliente con autenticación OAuth2, validación JWT y enrutamiento basado en roles a microservicios apropiados

Tech Stack:
Spring Cloud Gateway
Spring Security OAuth2
JWT
+1 más
Estructura de Controller con Arquitectura Hexagonal
java
Servicio Core (Microservicio Principal)

Controller que actúa como adaptador entre HTTP y el dominio, usando DTOs y delegando lógica al service

@RestController
@RequestMapping("/api/emprendimientos")
@Tag(name = "Emprendimientos", description = "Gestión de cuentas de emprendimiento")
public class EmprendimientoController {

    private final EmprendimientoService emprendimientoService;
    private final ModelMapper modelMapper;

    @PostMapping
    @Operation(summary = "Registrar nuevo emprendimiento")
    public ResponseEntity<EmprendimientoResponseDto> registrarEmprendimiento(
            @Valid @RequestBody EmprendimientoRequestDto request) {
        
        // Mapeo a modelo de dominio
        Emprendimiento emprendimiento = modelMapper.map(request, Emprendimiento.class);
        
        // Lógica de negocio en el service
        Emprendimiento creado = emprendimientoService.registrar(emprendimiento);
        
        // Mapeo a DTO de respuesta
        EmprendimientoResponseDto response = modelMapper.map(creado, EmprendimientoResponseDto.class);
        
        return ResponseEntity.status(HttpStatus.CREATED).body(response);
    }
}

🔍 Contexto del Código:

Servicio: Servicio Core (Microservicio Principal)

Descripción: Servicio principal con arquitectura hexagonal para gestión de emprendimientos y productos

Tech Stack:
Spring Boot 3.4.5
Spring Data JPA
PostgreSQL
+2 más

$ git log --grep="lesson:" --pretty=format:"%s"

Reflexiones y próximos pasos en el desarrollo

Lecciones Aprendidas
💡

Arquitectura hexagonal mejora significativamente testabilidad y mantenibilidad del código

💡

Spring Cloud Gateway es poderoso pero requiere configuración y testing cuidadoso de filtros

💡

Triggers de base de datos son útiles para sincronización pero pueden complicar flujos de debugging

💡

Keycloak tiene curva de aprendizaje empinada pero proporciona capacidades de autenticación grado empresarial

💡

Docker Compose simplifica desarrollo multi-servicio y asegura consistencia de ambiente

💡

FastAPI con Python sobresale para microservicios especializados en IA con capacidades async

💡

Bean Validation debe complementarse con validación de lógica de negocio en capas de servicio

💡

Documentación OpenAPI/Swagger es esencial para colaboración en equipo y contratos API

💡

Patrones de arquitectura dirigida por eventos son cruciales para mantener consistencia de datos entre servicios

💡

Diseño de estructura de claims JWT impacta directamente complejidad de implementación de autorización

Próximos Pasos

Completar Sprint 8: Finalizar integración Google Maps y sistema de gestión de ventas

Implementar sistema integral de notificaciones con email y notificaciones push

Construir dashboard de analíticas avanzadas con insights de ventas y métricas de negocio

Agregar capa de cache Redis para optimización de performance de consultas frecuentes

Implementar funcionalidades en tiempo real usando WebSocket para actualizaciones de pedidos en vivo

Configurar pipeline CI/CD con testing automatizado y despliegue a infraestructura cloud

Agregar monitoreo integral y logging con stack ELK para preparación de producción

Desarrollar aplicación móvil para experiencia mejorada de compradores y emprendedores

Implementar recomendaciones IA avanzadas para descubrimiento personalizado de productos

Escalar infraestructura para despliegue multi-región y alta disponibilidad

🎯 Filosofía de Desarrollo

🏗️

Arquitectura Limpia

Separación clara de responsabilidades con arquitectura hexagonal

🔧

Iteración Continua

Desarrollo ágil con sprints de 2 semanas y mejora constante

📚

Aprendizaje Activo

Cada desafío es una oportunidad de crecimiento técnico

¿Interesado en los detalles técnicos?

Este proyecto está en desarrollo activo como parte de mi Proyecto Final de Ingeniería en Sistemas. Si tienes preguntas sobre la implementación o quieres discutir sobre arquitectura de microservicios, ¡no dudes en contactarme!

📧 Disponible para consultas
🤝 Abierto a colaboraciones
🚀 En desarrollo activo