{"id":20531921,"url":"https://github.com/lucas29951/fifa-challenge","last_synced_at":"2026-04-13T17:32:31.585Z","repository":{"id":260845040,"uuid":"880602843","full_name":"lucas29951/fifa-challenge","owner":"lucas29951","description":"Aplicación web completa desarrollada como proyecto del challenge X Academy.","archived":false,"fork":false,"pushed_at":"2025-08-08T00:36:59.000Z","size":34473,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-08T02:33:15.316Z","etag":null,"topics":["angular","fullstack","nodejs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucas29951.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-30T02:27:06.000Z","updated_at":"2025-08-08T00:37:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"2d12c103-3425-4685-8beb-5c7ea62a5847","html_url":"https://github.com/lucas29951/fifa-challenge","commit_stats":null,"previous_names":["lucas29951/fifa-challenge"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lucas29951/fifa-challenge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucas29951%2Ffifa-challenge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucas29951%2Ffifa-challenge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucas29951%2Ffifa-challenge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucas29951%2Ffifa-challenge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucas29951","download_url":"https://codeload.github.com/lucas29951/fifa-challenge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucas29951%2Ffifa-challenge/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270082980,"owners_count":24523842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","fullstack","nodejs"],"created_at":"2024-11-16T00:10:58.705Z","updated_at":"2026-04-13T17:32:31.573Z","avatar_url":"https://github.com/lucas29951.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FIFA Challenge - Gestión de Jugadores\n\n## Tabla de Contenidos\n- [Descripción](#descripción)\n- [Tecnologías](#tecnologías)\n- [Requisitos](#requisitos)\n- [Instalación](#instalación)\n- [Configuración](#configuración)\n- [Ejecución con Docker](#ejecución-con-docker)\n- [Estructura del Proyecto](#estructura-del-proyecto)\n- [API Endpoints](#api-endpoints)\n- [Variables de Entorno](#variables-de-entorno)\n- [Decisiones Técnicas](#decisiones-técnicas)\n- [Contribución](#contribución)\n- [Licencia](#licencia)\n\n## Descripción\nAplicación web full stack para gestionar un listado de jugadores de FIFA, desarrollada con:\n- **Backend**: Node.js con Express y Sequelize como ORM\n- **Frontend**: Angular\n- **Base de datos**: MySQL\n\n## Tecnologías\n\n### Frontend\n- **Angular** (v16+)\n- **Angular Material** para componentes UI\n- **RxJS** para manejo de observables\n- **NgRx** (opcional) para gestión de estado\n\n### Backend\n- **Node.js** con Express\n- **Sequelize** como ORM\n- **MySQL** como base de datos\n- **JWT** para autenticación\n\n### DevOps\n- **Docker** y **docker-compose** para containerización\n- **MySQL** en contenedor Docker\n\n## Requisitos\n\n- Docker 20.10+\n- Docker Compose 2.0+\n- Node.js 18+\n- npm 9+\n- Angular CLI 16+\n\n## Instalación (Desarrollo)\n\n1. Clona el repositorio:\n```bash\ngit clone https://github.com/lucas29951/fifa-challenge.git\ncd fifa-challenge\n```\n\n2. Instala dependencias del backend:\n```bash\ncd backend\nnpm install\n```\n\n3. Instala dependencias del frontend:\n```bash\ncd ../frontend\nnpm install\n```\n\n## Configuración\n\n1. Crea un archivo `.env` en la carpeta `backend` basado en `.env.example`:\n```bash\ncd backend\ncp .env.example .env\n```\n\n2. Configura tus variables de entorno (ver sección [Variables de Entorno](#variables-de-entorno)).\n\n## Ejecución con Docker\n\nEl proyecto incluye un archivo `docker-compose.yml` para levantar toda la infraestructura:\n\n```bash\ndocker-compose up --build\n```\n\nEsto iniciará:\n- Servidor backend en puerto 3000\n- Frontend Angular en puerto 4200\n- Base de datos MySQL en puerto 3306\n\n## Estructura del Proyecto\n\n```\nfifa-challenge/\n├── backend/                 # Backend Node.js\n│   ├── config/              # Configuración de Sequelize\n│   ├── controllers/         # Controladores de rutas\n│   ├── middleware/          # Configuracion de controles\n│   ├── models/              # Modelos de Sequelize\n│   ├── routes/              # Definición de rutas\n│   ├── validations/         # Definición de validaciones\n│   ├── server.js            # Punto de entrada y configuración de Express\n│   └── .env                 # Variables de entorno\n│\n├── frontend/                # Frontend Angular\n│   ├── src/\n│   │   ├── app/             # Módulos y componentes\n│   │   ├── assets/          # Archivos estáticos\n│   │   ├── environments/    # Configuración por entorno\n│   │   └── ...              # Estructura estándar de Angular\n│   └── angular.json         # Configuración de Angular\n│\n├── docker-compose.yml       # Configuración de Docker\n├── .gitignore               # Archivos ignorados por Git\n└── README.md                # Este archivo\n```\n\n## API Endpoints\n\n### Jugadores\n- `GET /api/players/genre`           - Lista todos los jugadores\n- `GET /api/players/genre/id/:id`    - Obtiene un jugador por ID\n- `POST /api/players/genre`          - Crea un nuevo jugador\n- `PUT /api/players/genre/id/:id`    - Actualiza un jugador\n- `DELETE /api/players/genre/id/:id` - Elimina un jugador\n\n### Autenticación\n- `POST /api/auth/register` - Registro de usuario\n- `POST /api/auth/login`    - Inicio de sesión\n\n## Variables de Entorno\n\nArchivo `.env` en la carpeta `backend`:\n\n```env\n# Server\nPORT=3000\nNODE_ENV=development\n\n# Database\nDB_NAME=fifa_db\nDB_USER=root\nDB_PASSWORD=password\nDB_HOST=mysql_db  # Nombre del servicio en docker-compose\n\n# Auth\nJWT_SECRET=your_jwt_secret_key\nJWT_EXPIRES_IN=24h\n```\n\n## Decisiones Técnicas\n\n### Backend\n- **Sequelize** como ORM para interacción con MySQL\n- **JWT** para autenticación stateless\n\n### Frontend\n- **Angular CLI** para estructura y build\n- **Angular Material** para UI consistente\n- **Services** para comunicación con API\n- **Reactive Forms** para formularios\n\n### Base de Datos\n- **MySQL** como motor relacional\n- **Dockerizada** para fácil configuración\n- **Modelo relacional** para jugadores y usuarios\n\n### Docker\n- **Servicios separados** para frontend, backend y base de datos\n- **Persistencia** de datos con volumen para MySQL\n- **Variables de entorno** para configuración\n\n## Contribución\n\n1. Haz fork del proyecto\n2. Crea una rama (`git checkout -b feature/nueva-funcionalidad`)\n3. Haz commit de tus cambios (`git commit -m 'Agrega nueva funcionalidad'`)\n4. Push a la rama (`git push origin feature/nueva-funcionalidad`)\n5. Abre un Pull Request\n\n## Licencia\n\nDistribuido bajo la licencia MIT. Ver `LICENSE` para más información.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucas29951%2Ffifa-challenge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucas29951%2Ffifa-challenge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucas29951%2Ffifa-challenge/lists"}