ListGift

🎁 ListGist: Servicio Web para Gestión de Listas de Regalos GitHub Actions CI/CD Status

Índice

✨ Descripción y Arquitectura

El proyecto ListGift es una aplicación web full-stack diseñada para la creación, gestión y compartición de listas de regalos. Combina tecnologías modernas para el frontend y el backend, ofreciendo una experiencia de usuario intuitiva y una base robusta para la manipulación de datos.

El diseño se centra en una arquitectura cliente-servidor, con una clara separación entre la interfaz de usuario y la lógica de negocio, lo que garantiza escalabilidad, fiabilidad y facilidad de mantenimiento.

Frontend (React) Proporciona una interfaz de usuario intuitiva para crear, consultar, actualizar y eliminar listas de regalos y los ítems dentro de ellas.

Backend (PHP) Gestiona la lógica de negocio, la persistencia de datos de las listas e ítems en la base de datos, y el sistema de autenticación.

Base de Datos PostgreSQL/MySQL Almacena todos los datos relacionados con los usuarios, listas, ítems y roles, asegurando una gestión eficiente y segura de la información.


🎯 Funcionalidades Clave

1. Gestión de Recursos (CRUD)

2. Seguridad y Acceso (Middlewares)

3. Utilidades y Almacenamiento


⚙️ Tecnologías Utilizadas

Frontend


Backend


Base de Datos


Desarrollo y Operaciones - DevOps


🚀 Despliegue y CI/CD Automatizado

El proyecto utiliza un pipeline de Integración Continua / Despliegue Continuo (CI/CD) con GitHub Actions para automatizar la subida a InfinityFree (FTP).

1. Despliegue Condicional

El workflow (main.yml) está configurado con dos jobs separados (frontend_deploy y backend_deploy), que se ejecutan solo si hay cambios en su respectiva carpeta (frontend/ o backend/).

2. Fases del CI/CD

Componente Comando de Build Carpeta de Salida Servidor (FTP Path)
Frontend (Vite) cd frontend && npm run build frontend/dist/ /htdocs/
Backend (PHP) cd backend && composer install --no-dev backend/ /htdocs/backend/

3. Configuración de Credenciales

Para que GitHub Actions pueda desplegar, debes configurar las siguientes variables como Repository Secrets en GitHub (Configuración > Secrets > Actions):

Secret Name Valor (Ej. Producción) Propósito
FTP_HOST ftpupload.net Host del servidor FTP de InfinityFree.
FTP_USERNAME epiz_12345678 Usuario FTP.
FTP_PASSWORD [...contraseña FTP...] Contraseña FTP.

📝 Comandos por Entorno

Frontend (Vite + React)

Comando Descripción
npm run dev Inicia el servidor de desarrollo del frontend.
npm run build Compila el proyecto frontend para producción.
npm run lint Ejecuta el linter (ESLint) en los archivos JS/JSX.
npm run preview Previsualiza la construcción de producción.

Backend (PHP)

Comando Descripción
composer start Inicia el servidor de desarrollo PHP (en localhost:8000).
composer migrate Ejecuta las migraciones de la base de datos (hacia arriba).
composer migrate:db Comando específico para migración de la base de datos (según script).
composer migrate:down Revierte la última migración de la base de datos.
composer migrate:refresh Revierte todas las migraciones y las vuelve a ejecutar.
composer seed Ejecuta los seeders para poblar la base de datos con datos de prueba.
composer seed:refresh Revierte los seeders y los vuelve a ejecutar.
composer migrate:full Ejecuta migrate:refresh seguido de seed.

🔬 Pruebas

Actualmente, este proyecto no cuenta con una sección de pruebas detallada en la información proporcionada. Si se implementan pruebas (unitarias, de integración, E2E), esta sección se actualizará para incluir instrucciones de ejecución y tipos de pruebas.


🤝 Contribución

Las contribuciones son bienvenidas. Por favor, sigue los siguientes pasos:

  1. Haz un fork del proyecto.
  2. Crea una rama para tu nueva característica (git checkout -b feature/nueva-caracteristica).
  3. Realiza los cambios y haz commit (git commit -m 'Agregada nueva característica').
  4. Envía un pull request.

🧑‍💻 Autor

Descripción de la imagen

Ing. Benjamin Tavarez

Este proyecto fue desarrollado por Benjamin Tavarez en una iniciativa propia a la falta de un espacio para lista personalizadas de obsequios. Todos los derechos reservados

Si tienes alguna pregunta o comentario sobre este proyecto, no dudes en ponerte en contacto conmigo a través de benjamin.tavarez.98@gmail.com o en LinkedIn.