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.
Lists) e Ítems (Items): Permite la creación, consulta, actualización y eliminación (CRUD) de listas de regalos y de los artículos asociados dentro de cada lista.JWT_SECRET.Control de Acceso (RBAC): Implementa middlewares para permisos basados en roles, para asegurar la gestión de recursos limitando el acceso a usuarios ‘Admin’, o al propietario directo del recurso (Control de Propiedad).
Validator.php) para asegurar la integridad de los datos de las peticiones.https://listgift.free.nf) y maneja credenciales (cookies).FileUpload.php) está configurada para integrarse con Google Drive, validando archivos con un límite de 5MB. React
React Router
Framer Motion
Spline
Axios
Tailwind CSS
Material Tailwind
PHP
Illuminate/Database
PHP-JWT
Bramus/Router
Respect/Validation
FakerPHP
vlucas/phpdotenv
.env.
Desarrollo y Operaciones - DevOps Git / GitHub
GitHub Actions
InfinityFree
Postman
Browser DevTools
DBeaver
El proyecto utiliza un pipeline de Integración Continua / Despliegue Continuo (CI/CD) con GitHub Actions para automatizar la subida a InfinityFree (FTP).
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/).
| 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/ |
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. |
| 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. |
| 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. |
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.
Las contribuciones son bienvenidas. Por favor, sigue los siguientes pasos:
git checkout -b feature/nueva-caracteristica).git commit -m 'Agregada nueva característica').|
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. |