Este proyecto es una aplicación de escaneo de botellas reciclables que cuenta con una arquitectura de microservicios, compuesta por un backend principal en Spring Boot, un servicio de análisis de imágenes de inteligencia artificial en Python (usando YOLO-cls) y una interfaz web.
Antes de poner en marcha el proyecto, asegúrate de tener instalado en tu sistema:
| Herramienta | Versión mínima | Uso |
|---|---|---|
| Java Development Kit (JDK) | 17+ | Backend Spring Boot |
| Maven | 3.8+ | Compilar Spring Boot (o usar mvnw) |
| Python | 3.10+ | Servicio de análisis de imágenes |
| Node.js y npm | 18+ | Frontend Vite/React |
| Docker y Docker Compose | Docker 24+ / Compose 2.0+ | Despliegue automatizado |
| MySQL 8.0 | 8.0 | Base de datos (se levanta con Docker) |
Puedes levantar el proyecto de dos formas: manual (cada servicio por separado) o automatizada (todo con Docker Compose).
Levanta los 3 servicios backend (MySQL, analizador de imágenes y API Spring Boot) con un solo comando.
La interfaz web se ejecuta por separado (ver sección manual).
cd demo
docker compose up -dEsto construye las imágenes y levanta los contenedores en este orden:
db— MySQL 8.0 (puerto3307)image-analyzer— Python/FastAPI con YOLO (puerto11434)api— Spring Boot (puerto8090)
# Ver estado de los contenedores
docker compose ps
# Ver logs en vivo
docker compose logs -f
# Probar que el API responde
curl http://localhost:8090/recycling/status
# Probar que el analizador de imágenes responde
curl http://localhost:11434/docsdocker compose downPara eliminar también los datos de la base de datos:
docker compose down -vLas credenciales se definen en demo/.env (valores por defecto):
root_password=test
password=test
name=test
user=test
Los modelos YOLO se montan desde imageAnalizer/model/ como volumen dentro del contenedor image-analyzer.
Sigue estos pasos en el orden indicado para levantar el proyecto servicio por servicio. Se recomienda usar terminales distintas para cada uno.
Usando Docker Compose (solo la base de datos):
cd demo
docker compose up -d dbProcesa las imágenes usando YOLO-cls para determinar el tipo de plástico.
cd imageAnalizer
# Crear y activar entorno virtual
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows
# Instalar dependencias
pip install -r requirements.txt
# Iniciar servidor (puerto 11434)
python main.py
# o: uvicorn main:app --host 0.0.0.0 --port 11434 --reloadAPI REST central que coordina la lógica de negocio y se comunica con la IA.
cd demo
# Asegúrate de que MySQL y el servicio Python ya estén corriendo
# Compilar (omite tests con -DskipTests)
./mvnw clean install -DskipTests
# Ejecutar (puerto 8090)
./mvnw spring-boot:runLa conexión a BD se configura via
spring.datasource.*enapplication.yml. Los valores por defecto apuntan alocalhost:3307con credencialestest/test.
Interfaz de usuario del escáner web.
cd web-reeasy/vite-project
npm install
npm run devReeasy/
├── docker-compose.yml # Orquestación Docker (demo/)
├── .env # Variables de entorno (demo/)
├── demo/ # Backend Spring Boot (Java)
│ ├── Dockerfile # Multi-etapa para Docker
│ ├── application.yml # Configuración de Spring Boot
│ ├── db-init/ # Scripts de inicialización SQL
│ └── src/ # Código fuente Java
├── imageAnalizer/ # Microservicio de IA (Python/FastAPI)
│ ├── Dockerfile # Imagen para Docker
│ ├── .dockerignore # Excluye modelos del build
│ ├── model/ # Modelos YOLO (montados como volumen en Docker)
│ ├── main.py # Aplicación FastAPI
│ └── requirements.txt
├── web-reeasy/ # Interfaz web (Vite/React)
│ └── vite-project/ # Código fuente del frontend
└── ReEasy/ # Colección Bruno para pruebas de API