https://github.com/sebas-man/is2-ecommerce
Monorepo del proyecto E-commerce para Ingeniería del Software II. Contiene microservicios Backend (Java, Spring Boot) y microfrontends (Angular).
https://github.com/sebas-man/is2-ecommerce
angular ecommerce java maven microfrontends microservice mongodb monorepo rabbitmq redis scrum software-engineering spring-boot university-project
Last synced: 3 months ago
JSON representation
Monorepo del proyecto E-commerce para Ingeniería del Software II. Contiene microservicios Backend (Java, Spring Boot) y microfrontends (Angular).
- Host: GitHub
- URL: https://github.com/sebas-man/is2-ecommerce
- Owner: SebAs-man
- Created: 2025-03-30T19:30:23.000Z (3 months ago)
- Default Branch: develop
- Last Pushed: 2025-04-05T05:49:56.000Z (3 months ago)
- Last Synced: 2025-04-05T06:27:11.385Z (3 months ago)
- Topics: angular, ecommerce, java, maven, microfrontends, microservice, mongodb, monorepo, rabbitmq, redis, scrum, software-engineering, spring-boot, university-project
- Language: Java
- Homepage:
- Size: 86.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Proyecto E-commerce Monorepo - Ingeniería del Software II
## 1. Introducción
Bienvenido al Monorepo del proyecto de E-commerce desarrollado para la asignatura Ingeniería del Software II. Este repositorio contiene el código fuente completo de la plataforma, incluyendo múltiples microservicios backend y microfrontends.
El objetivo principal es construir una aplicación de e-commerce funcional aplicando principios de arquitectura moderna, metodologías ágiles (Scrum) y fomentando la colaboración en equipo.
## 2. Arquitectura General
La plataforma sigue una arquitectura distribuida:
* **Backend:** Implementado como un conjunto de **Microservicios** desarrollados con Java y Spring Boot. Cada servicio se enfoca en una capacidad de negocio específica (Catálogo, Carrito, Pedidos, Usuarios, etc.). Se comunican entre sí mediante APIs REST y/o mensajería asíncrona (RabbitMQ). Un API Gateway (Kong) gestiona el acceso externo.
* **Frontend:** Implementado usando **Microfrontends** desarrollados con Angular y potencialmente orquestados mediante Webpack Module Federation a través de una aplicación Shell principal.Para más detalles sobre cada parte, consulta:
* [README del Backend](./backend/README.md)
* [README del Frontend](./frontend/README.md) (Pendiente)## 3. Estructura del Monorepo
Este repositorio organiza los diferentes componentes de la siguiente manera:
```text
/
├── backend/ # Microservicios Backend (Java/Spring Boot)
│ ├── catalog-service/
│ ├── cart-service/
│ └── ...
├── frontend/ # Microfrontends (Angular)
│ ├── navbar-mf/
│ ├── catalog-mf/
│ └── ...
├── libs/ # (Opcional) Librerías compartidas entre servicios/frontends
│ └── shared-dtos/ # Ejemplo: DTOs comunes para comunicación
├── .gitignore # Reglas globales para ignorar archivos
└── README.md # Este archivo (Visión General)
```Para detalles específicos sobre cómo configurar, ejecutar o probar cada microservicio o microfrontend, consulta el archivo README.md dentro de su respectivo directorio.
## Tecnologías principales
- **Backend:** Java 17+, Spring Boot 3+, Spring Data (MongoDB, JPA), RabbitMQ, gRPC, Kong API Gateway
- **Frontend:** Angular 16+, TypeScript
- **Base de Datos:** MongoDB, Redis, Bases de Datos Relacionales
- **Build:** Maven (Backend), Angular CLI (Frontend)
- **Control de Versiones:** Git, GitHub
- **Metodología:** Scrum## Prerrequisitos Globales
- Git
- JDK 17+
- Maven
- Node.js y NPM
- Docker (Recomendado, para bases de datos y otros servicios)
- Una instancia de MongoDB, Redis, y BD Relacional (pueden correr en Docker)
- RabbitMQ, Kong## Cómo Empezar
1. **Clonar el Repositorio:**
```
git clone
cd tu-proyecto-ecommerce
```
2. **Configurar Ramas:** La rama principal de desarrollo es `develop`. Asegúrate de estar en ella:
```
git checkout develop
git pull origin develop # Para obtener lo último
```
3. **Dependencias:**
- Backend: Revisa los `pom.xml` o `build.gradle` de cada servicio. Un `mvn install` dentro de cada servicio podría ser necesario.
- Frontend: Ve a cada directorio de microfrontend (`cd frontend/navbar-mf`) y ejecuta `npm install`.
4. **Variables de Entorno / Configuración:** Revisa los archivos `application.properties` de cada servicio backend para configurar las conexiones a bases de datos, RabbitMQ, etc. Pueden requerir variables de entorno o perfiles de Spring.
5. **Ejecutar Servicios/Frontends:** Consulta el `README.md` específico de cada componente para instrucciones detalladas de ejecución.## Estrategia de Ramificación
Este repositorio utiliza un flujo **Gitflow Simplificado**:
- `main`: Contiene el código estable y probado, potencialmente desplegable. No se hace push directo.
- `develop`: Rama principal de integración. Todo el nuevo desarrollo se fusiona aquí mediante Pull Requests. Es la rama de trabajo por defecto.
- `feature//`: Ramas para desarrollar nuevas funcionalidades o arreglos. Se crean desde `develop` y vuelven a `develop` vía Pull Request (ej: `feature/catalog/agregar-validacion-atributo`).