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. Levantar todo el sistema (DB + Backend)
docker compose up --build
# 3. 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.
- Registro y Autenticación: Sistema seguro de login/registro con JWT
- Catálogo de Productos: Navegación por categorías, búsqueda y filtros
- Carrito de Compras: Agregar, modificar y eliminar productos
- Gestión de Pedidos: Historial de pedidos y seguimiento de estado
- Direcciones de Entrega: Múltiples direcciones por usuario
- Dashboard Administrativo: Panel de control completo
- Gestión de Productos: CRUD completo de productos con imágenes
- Gestión de Usuarios: Administración de clientes y roles
- Gestión de Pedidos: Actualización de estados y procesamiento
- Reportes de Ventas: Análisis y reportes de ventas
- Interfaz de Entrega: Gestión de pedidos asignados
- Actualización de Estados: Cambio de estado de pedidos
- Java 21 - Lenguaje de programación
- Spring Boot 3.5 - Framework principal
- Spring Security - Autenticación y autorización
- Spring Data JPA - Persistencia de datos
- JWT (JSON Web Tokens) - Autenticación stateless
- MySQL - Base de datos relacional
- Swagger/OpenAPI - Documentación de API
- Maven - Gestión de dependencias
- HTML5 - Estructura de páginas
- CSS3 - Estilos y diseño
- JavaScript (ES6) - Lógica del cliente
- Bootstrap 5 - Framework CSS responsivo
- MySQL 8.0+ - Sistema de gestión de base de datos
- Hibernate - ORM para Java
- Docker y Docker Compose
- Git (para clonar el repositorio)
- Navegador web moderno (Chrome, Firefox, Edge)
- Java 21 o superior
- Maven 3.6+ (o usar el Maven Wrapper incluido:
./mvnw) - MySQL 8.0+
- Git (para clonar el repositorio)
- Navegador web moderno (Chrome, Firefox, Edge)
git clone https://github.com/LIUNKS/FarmaYa.git
cd FarmaYaEsta 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 --buildEsto hará automáticamente:
- ✅ Crear el contenedor MySQL 8.0 con la base de datos
farmaya - ✅ Compilar tu aplicación Spring Boot con Maven Wrapper
- ✅ Ejecutar el script SQL (
farmaYa.sql) automáticamente - ✅ Iniciar el backend en
http://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 -vSi deseas cambiar las credenciales de la base de datos:
# Crear archivo .env en la raíz del proyecto
cp .env.example .env
# Editar el archivo .env con tus credenciales
nano .envEjemplo de .env:
MYSQL_ROOT_PASSWORD=TuContraseñaSegura
MYSQL_DATABASE=farmayaNota de seguridad: El archivo .env está ignorado en .gitignore para evitar subir credenciales al repositorio.
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.sqldocker run --name farmaya-db \
-e MYSQL_ROOT_PASSWORD=Johan12315912 \
-e MYSQL_DATABASE=farmaya \
-p 3306:3306 \
-v farmaya_data:/var/lib/mysql \
--restart unless-stopped \
-d mysql:8.0cd backend
# Editar application.properties si es necesario
nano src/main/resources/application.propertiesCredenciales por defecto:
- Usuario:
root - Contraseña:
Johan12315912 - Base de datos:
farmaya
# Opción 1: Con Maven Wrapper (recomendado)
./mvnw spring-boot:run
# Opción 2: Con Maven instalado globalmente
mvn spring-boot:runEl 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 3000El frontend estará disponible en: http://localhost:3000 (o directamente abriendo los archivos HTML)
- Cliente: Registrarse o iniciar sesión en
/login.html - Administrador: Usar credenciales de admin para acceder al dashboard
- Repartidor: Usar credenciales de delivery para gestión de pedidos
La 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 usuario
FarmaYa/
├── 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
- Configuración de Docker: Guía completa de Docker, troubleshooting y mejores prácticas
- Principios de Diseño: Aplicación de MVC, TDD, DAO y SOLID
- Librerías y Dependencias: Recursos Java utilizados
- Porcentaje del Proyecto: Distribución del código fuente
- Control de Versiones: Análisis del repositorio Git
# 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.