Proyecto Final para el curso de Integrador I - Sistema de E-commerce para Farmacia
FarmaYa es una plataforma de comercio electrónico completa diseñada para farmacias, que permite a los usuarios navegar por un catálogo de productos farmacéuticos, gestionar carritos de compra, realizar pedidos y realizar pagos de manera segura. El sistema incluye interfaces separadas para clientes, administradores y personal de entrega.
# 1. Clonar el repositorio
git clone https://github.com/LIUNKS/FarmaYa.git
cd FarmaYa
# 2. Crear variables de entorno locales
cp .env.example .env
# Edita .env y define contraseñas seguras
# 3. Levantar todo el sistema (DB + Backend)
docker compose up --build
# 4. Abrir en el navegador
# Backend API: http://localhost:8080
# Swagger UI: http://localhost:8080/swagger-ui.html
# Frontend: Abre frontend/farmacia-merysalud/index.html
¡Listo! 🎉 El backend estará corriendo en el puerto 8080 con la base de datos configurada y el script SQL ejecutado automáticamente.
./mvnw)git clone https://github.com/LIUNKS/FarmaYa.git
cd FarmaYa
Esta es la forma más rápida de levantar todo el proyecto (Base de datos + Backend) en contenedores.
# Construir y arrancar todos los servicios (DB + Backend)
docker compose up --build
Esto hará automáticamente:
farmayafarmaYa.sql) automáticamentehttp://localhost:8080# Ver logs en tiempo real
docker compose logs -f
# Ver solo logs del backend
docker compose logs -f farmaya-app
# Ver solo logs de la base de datos
docker compose logs -f farmaya-db
# Detener todos los servicios
docker compose down
# Reiniciar solo el backend (si cambias código)
docker compose restart farmaya-app
# Reconstruir el backend (después de cambios importantes)
docker compose up --build farmaya-app
# Detener y eliminar todo (incluida la base de datos)
docker compose down -v
Antes de ejecutar Docker Compose, define tus variables locales:
# Crear archivo .env en la raíz del proyecto
cp .env.example .env
# Editar el archivo .env con tus credenciales
nano .env
Ejemplo de .env:
MYSQL_ROOT_PASSWORD=TuContraseñaRootSegura
MYSQL_PASSWORD=TuContraseñaAppSegura
MYSQL_DATABASE=farmaya
MYSQL_USER=farmaya_app
SPRING_SQL_INIT_MODE=always
Nota de seguridad: El archivo .env está ignorado en .gitignore para evitar subir credenciales al repositorio.
Importante:
SPRING_SQL_INIT_MODE=always para cargar el script SQL.SPRING_SQL_INIT_MODE=never.docker-compose.override.yml local (no versionado).Si prefieres ejecutar el proyecto de forma tradicional sin Docker:
# Crear la base de datos e importar el script SQL
mysql -u root -p < backend/src/main/resources/farmaYa.sql
docker run --name farmaya-db \
-e MYSQL_ROOT_PASSWORD=TuContraseñaRootSegura \
-e MYSQL_USER=farmaya_app \
-e MYSQL_PASSWORD=TuContraseñaAppSegura \
-e MYSQL_DATABASE=farmaya \
-p 3306:3306 \
-v farmaya_data:/var/lib/mysql \
--restart unless-stopped \
-d mysql:8.0
cd backend
# Editar application.properties si es necesario
nano src/main/resources/application.properties
Variables recomendadas para entorno local:
SPRING_DATASOURCE_USERNAME=farmaya_appSPRING_DATASOURCE_PASSWORD=<tu_password_app>MYSQL_DATABASE=farmayaSPRING_SQL_INIT_MODE=always (solo desarrollo)# Opción 1: Con Maven Wrapper (recomendado)
./mvnw spring-boot:run
# Opción 2: Con Maven instalado globalmente
mvn spring-boot:run
El backend estará disponible en: http://localhost:8080
cd frontend/farmacia-merysalud
# Opción 1: Abrir directamente en el navegador
# Abre el archivo index.html con tu navegador
# Opción 2: Usar un servidor local (recomendado)
python -m http.server 3000
# o con Python 2
python -m SimpleHTTPServer 3000
# o con Node.js
npx serve -p 3000
El frontend estará disponible en: http://localhost:3000 (o directamente abriendo los archivos HTML)
/login.htmlLa documentación completa de la API está disponible en Swagger UI:
http://localhost:8080/swagger-ui.html
POST /api/auth/login - AutenticaciónGET /api/products - Listar productosPOST /api/cart/add - Agregar al carritoPOST /api/orders - Crear pedidoGET /api/orders - Listar pedidos del usuarioFarmaYa/
├── docker-compose.yml # Orquestación de servicios (DB + Backend)
├── .env.example # Ejemplo de variables de entorno
├── .gitignore # Archivos ignorados por Git
├── backend/ # API REST con Spring Boot
│ ├── Dockerfile # Imagen Docker del backend
│ ├── mvnw / mvnw.cmd # Maven Wrapper
│ ├── pom.xml # Dependencias Maven
│ ├── src/main/java/com/farma_ya/
│ │ ├── controller/ # Controladores REST
│ │ ├── model/ # Entidades JPA
│ │ ├── repository/ # Repositorios de datos
│ │ ├── service/ # Lógica de negocio
│ │ ├── security/ # Configuración de seguridad
│ │ └── config/ # Configuraciones generales
│ └── src/main/resources/
│ ├── application.properties
│ └── farmaYa.sql # Script de inicialización
├── frontend/ # Interfaz de usuario
│ └── farmacia-merysalud/
│ ├── assets/ # CSS, JS, imágenes
│ ├── components/ # Componentes HTML reutilizables
│ ├── admin/ # Páginas de administración
│ └── delivery/ # Páginas de entrega
└── DOCKER_SETUP.md # Documentación detallada de Docker
# Verificar que MySQL esté listo
docker compose logs farmaya-db | grep "ready for connections"
# Verificar conectividad entre contenedores
docker compose exec farmaya-app ping farmaya-db
# Verificar que el archivo existe en el contenedor
docker compose exec farmaya-app ls -la /app/src/main/resources/
# Ver logs de Spring Boot
docker compose logs farmaya-app | grep "farmaYa.sql"
# Reconstruir la imagen sin caché
docker compose build --no-cache farmaya-app
docker compose up farmaya-app
# Ver qué proceso está usando el puerto
lsof -i :3306
lsof -i :8080
# O detener contenedores previos
docker stop $(docker ps -aq)
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.