{"id":27058804,"url":"https://github.com/cristianpvp/futbolisimos-web","last_synced_at":"2026-02-25T16:04:05.335Z","repository":{"id":285828185,"uuid":"958623918","full_name":"CrIsTiAnPvP/Futbolisimos-Web","owner":"CrIsTiAnPvP","description":"Este proyecto es OpenSource. Enfocado en el aprendizaje de uso de aplicaciones para Oauth, bases de datos no relacionales-NoSQL, y NextJs Con React y TypeScript.","archived":false,"fork":false,"pushed_at":"2025-05-07T11:30:44.000Z","size":3837,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-27T07:47:48.164Z","etag":null,"topics":["api","api-rest","app-router-nextjs","i18n","javascript","next-auth","next-auth-v5","next-intl","nextjs15","nginx","nginx-proxy","oauth","prisma","prisma-orm","react","reactts","reacttsx","typescript"],"latest_commit_sha":null,"homepage":"https://futbolisimos.cristianac.live","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CrIsTiAnPvP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null}},"created_at":"2025-04-01T13:54:13.000Z","updated_at":"2025-05-07T11:30:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"640e29b2-8623-43fb-9a02-f064ea53a4f5","html_url":"https://github.com/CrIsTiAnPvP/Futbolisimos-Web","commit_stats":null,"previous_names":["cristianpvp/futbolisimos-web"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CrIsTiAnPvP/Futbolisimos-Web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrIsTiAnPvP%2FFutbolisimos-Web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrIsTiAnPvP%2FFutbolisimos-Web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrIsTiAnPvP%2FFutbolisimos-Web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrIsTiAnPvP%2FFutbolisimos-Web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CrIsTiAnPvP","download_url":"https://codeload.github.com/CrIsTiAnPvP/Futbolisimos-Web/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrIsTiAnPvP%2FFutbolisimos-Web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29829411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T15:41:19.027Z","status":"ssl_error","status_checked_at":"2026-02-25T15:40:47.150Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["api","api-rest","app-router-nextjs","i18n","javascript","next-auth","next-auth-v5","next-intl","nextjs15","nginx","nginx-proxy","oauth","prisma","prisma-orm","react","reactts","reacttsx","typescript"],"created_at":"2025-04-05T12:17:01.243Z","updated_at":"2026-02-25T16:04:05.319Z","avatar_url":"https://github.com/CrIsTiAnPvP.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Futbolisimos - Web\n\nFutbolisimos es una plataforma web diseñada para los amantes del fútbol. Permite a los usuarios crear ligas, invitar amigos, gestionar equipos y competir entre ellos. Este README documenta la estructura del proyecto, con un enfoque especial en la API, para que cualquier desarrollador o usuario técnico pueda entender cómo funciona y cómo interactuar con el sistema.\n\n---\n\n## Tabla de Contenidos\n\n1. [📖 Descripción General](#-descripción-general)\n2. [🏗️ Estructura del Proyecto](#️-estructura-del-proyecto)\n3. [⚙️ Configuración Inicial](#️-configuración-inicial)\n\t- [Requisitos Previos](#requisitos-previos)\n\t- [Estructura archivo .env](#estructura-del-archivo-env)\n4. [📡 Estructura de la API](#-estructura-de-la-api)\n\t- [🔐 Autenticación](#-autenticación)\n\t- [👤 Usuarios](#-usuarios)\n\t- [🏆 Ligas](#-ligas)\n\t- [✉️ Invitaciones](#️-invitaciones)\n\t- [⚽ Equipos](#-equipos)\n5. [🛠️ Tecnologías Utilizadas](#️-tecnologías-utilizadas)\n6. [🤝 Contribuciones](#-contribuciones)\n\n---\n\n## 📖 Descripción General\n\nFutbolisimos permite a los usuarios:\n\n- Crear y gestionar ligas de fútbol.\n- Invitar a otros usuarios a unirse a sus ligas.\n- Configurar equipos y competir en ligas.\n- Gestionar cuentas de usuario.\n\nEl proyecto utiliza **Next.js** como framework principal, con soporte para internacionalización (i18n) y autenticación mediante **NextAuth**. La base de datos está gestionada con **Prisma** y se utiliza **MongoDB** como sistema de almacenamiento.\n\n---\n\n## 🏗️ Estructura del Proyecto\n\nEl proyecto está organizado de la siguiente manera:\n\n```bash\nFutbolisimos-Web/\n├── src/\n│   ├── app/\n│   │   ├── [locale]/          # Páginas organizadas por idioma\n│   │   ├── api/               # Endpoints de la API\n│   │   └── layout.tsx         # Layout principal\n│   ├── components/            # Componentes reutilizables\n│   ├── i18n/                  # Configuración de internacionalización\n│   ├── lib/                   # Utilidades compartidas\n│   ├── prisma/                # Configuración de Prisma\n│   └── provider/              # Proveedores de contexto (e.g., sesión)\n├── .env                       # Variables de entorno\n├── README.md                  # Documentación del proyecto\n└── package.json               # Dependencias del proyecto\n```\n\n---\n\n## ⚙️ Configuración Inicial\n\n### Requisitos Previos\n\n- **Node.js** v18+\n- **MongoDB Atlas** o una instancia local de MongoDB\n- Variables de entorno configuradas en un archivo `.env`\n\n### Estructura del Archivo `.env`\n\nEl archivo `.env` debe contener las siguientes variables de entorno para el correcto funcionamiento del proyecto. Asegúrate de configurarlas con los valores adecuados:\n\n```env\n# Base de datos\nDATABASE_URL=\"mongodb+srv://\u003cusuario\u003e:\u003ccontraseña\u003e@\u003ccluster\u003e.mongodb.net/\u003cnombre_base_datos\u003e\"\n\n# Entorno de desarrollo\nNODE_ENV=development\n\n# Configuración de autenticación\nAUTH_TRUST_HOST=true\n# AUTH_REDIRECT_PROXY_URL=\u003curl_proxy_redireccion\u003e\n# NEXTAUTH_URL_INTERNAL=\u003curl_interna_nextauth\u003e\n\n# Credenciales de OAuth\nAUTH_GITHUB_ID=\u003cid_github\u003e\nAUTH_GITHUB_SECRET=\u003csecreto_github\u003e\nAUTH_GOOGLE_ID=\u003cid_google\u003e\nAUTH_GOOGLE_SECRET=\u003csecreto_google\u003e\nAUTH_SPOTIFY_ID=\u003cid_spotify\u003e\nAUTH_SPOTIFY_SECRET=\u003csecreto_spotify\u003e\n\n# Claves públicas\nNEXT_PUBLIC_API_KEY=\u003cclave_api\u003e\nNEXT_PUBLIC_API_URL=\u003curl_api\u003e\nNEXT_PUBLIC_INVITE_URL=\u003curl_invitaciones\u003e\n\n# Secreto de autenticación\nAUTH_SECRET=\u003csecreto_autenticacion\u003e\n```\n\nAsegúrate de no compartir este archivo públicamente, ya que contiene información sensible.\n\n### Instalación\n\n1. **Clona el repositorio:**\n\n\t```bash\n\tgit clone https://github.com/tu-usuario/Futbolisimos-Web.git\n\tcd Futbolisimos-Web\n\t```\n\n2. **Instala las dependencias:**\n\n\t```bash\n\tpnpm install\n\t```\n\n3. **Configura las variables de entorno en el archivo `.env`:**\n\n\t```env\n\tDATABASE_URL=\"mongodb+srv://\u003cusuario\u003e:\u003ccontraseña\u003e@\u003ccluster\u003e.mongodb.net/futbolisimos\"\n\tNEXT_PUBLIC_API_KEY=\"tu-api-key\"\n\t```\n\n4. **Ejecuta el servidor de desarrollo:**\n\n\t```bash\n\tpnpm run dev\n\t```\n\n---\n\n## 📡 Estructura de la API\n\nLa API de Futbolisimos está organizada en diferentes endpoints que permiten gestionar usuarios, ligas, invitaciones y equipos. A continuación, se documentan los principales endpoints:\n\n### 🔐 Autenticación\n\n**POST** `/api/auth`  \n\n- **Descripción:** Maneja la autenticación de usuarios.  \n- **Requiere:** Credenciales de OAuth (GitHub, Google, etc.).  \n- **Respuesta:**\n\n  ```json\n  {\n\t\"user\": {\n\t\t\"id\": \"123\",\n\t\t\"name\": \"Usuario\",\n\t\t\"email\": \"usuario@example.com\"\n\t }\n  }\n  ```\n\n### 👤 Usuarios\n\n**GET** `/api/user`\n\n- **Descripción:** Obtiene información de un usuario por su ID.  \n- **Parámetros de consulta:**\n  - `id` (string): ID del usuario.  \n- **Respuesta:**\n  ```json\n  {\n\t \"user\": {\n\t\t\"id\": \"123\",\n\t\t\"name\": \"Usuario\",\n\t\t\"email\": \"usuario@example.com\"\n\t }\n  }\n  ```\n\n**POST** `/api/account`  \n\n- **Descripción:** Actualiza la información de un usuario.  \n- **Cuerpo de la solicitud:**\n\n  ```json\n  {\n\t \"id\": \"123\",\n\t \"name\": \"Nuevo Nombre\",\n\t \"apiKey\": \"tu-api-key\"\n  }\n  ```\n\n- **Respuesta:**\n\n  ```json\n  {\n\t \"message\": \"User updated successfully\"\n  }\n  ```\n\n### 🏆 Ligas\n\n**GET** `/api/league` \n\n- **Descripción:** Obtiene información de una liga por su ID.  \n- **Parámetros de consulta:**\n  - `id` (string): ID de la liga.  \n- **Respuesta:**\n\n  ```json\n  {\n\t \"liga\": {\n\t\t\"id\": \"456\",\n\t\t\"nombre\": \"Liga Ejemplo\",\n\t\t\"descripcion\": \"Descripción de la liga\",\n\t\t\"cantidadMiembros\": 10\n\t }\n  }\n  ```\n\n**POST** `/api/league/create`  \n\n- **Descripción:** Crea una nueva liga.  \n- **Cuerpo de la solicitud:**\n\n  ```json\n  {\n\t \"id\": \"123\",\n\t \"name\": \"Liga Ejemplo\",\n\t \"description\": \"Descripción de la liga\",\n\t \"image\": \"https://example.com/image.png\",\n\t \"maxMembers\": 20,\n\t \"apiKey\": \"tu-api-key\",\n\t \"privateLeague\": true\n  }\n  ```\n\n- **Respuesta:**\n\n  ```json\n  {\n\t \"message\": \"League created successfully\",\n\t \"league\": {\n\t\t\"id\": \"456\",\n\t\t\"nombre\": \"Liga Ejemplo\"\n\t }\n  }\n  ```\n\n**DELETE** `/api/league/delete`  \n\n- **Descripción:** Elimina una liga existente.  \n- **Cuerpo de la solicitud:**\n\n  ```json\n  {\n\t \"id\": \"456\",\n\t \"apiKey\": \"tu-api-key\"\n  }\n  ```\n- **Respuesta:**\n\n  ```json\n  {\n\t \"message\": \"League deleted successfully\"\n  }\n  ```\n\n### ✉️ Invitaciones\n\n**POST** `/api/league/[liga]/invite/create`  \n\n- **Descripción:** Crea una invitación para una liga.  \n- **Cuerpo de la solicitud:**\n\n  ```json\n  {\n\t \"id\": \"123\",\n\t \"apiKey\": \"tu-api-key\",\n\t \"privada\": true\n  }\n  ```\n\n- **Respuesta:**\n\n  ```json\n  {\n\t \"message\": \"Invitation created successfully\"\n  }\n  ```\n\n**DELETE** `/api/league/[liga]/invite/delete`\n\n- **Descripción:** Elimina una invitación existente.  \n- **Cuerpo de la solicitud:**\n\n  ```json\n  {\n\t \"id\": \"789\",\n\t \"apiKey\": \"tu-api-key\"\n  }\n  ```\n\n- **Respuesta:**\n\n  ```json\n  {\n\t \"message\": \"Invitation deleted successfully\"\n  }\n  ```\n\n### ⚽ Equipos\n\n**GET** `/api/team/eteam`  \n\n- **Descripción:** Obtiene los 10 equipos mejor valorados.  \n- **Respuesta:**\n\n  ```json\n  [\n\t {\n\t\t\"id\": \"1\",\n\t\t\"nombre\": \"Equipo 1\",\n\t\t\"valor\": 100\n\t },\n\t {\n\t\t\"id\": \"2\",\n\t\t\"nombre\": \"Equipo 2\",\n\t\t\"valor\": 95\n\t }\n  ]\n  ```\n\n---\n\n## 🛠️ Tecnologías Utilizadas\n\n- **Next.js:** Framework de React para aplicaciones web.\n- **NextAuth:** Autenticación para Next.js.\n- **Prisma:** ORM para la gestión de la base de datos.\n- **MongoDB:** Base de datos NoSQL.\n- **Tailwind CSS:** Framework de estilos CSS.\n- **i18n:** Internacionalización para soporte multilenguaje.\n\n---\n\n## 🤝 Contribuciones\n\n¡Las contribuciones son bienvenidas! Si deseas colaborar, por favor sigue estos pasos:\n\n1. Haz un fork del repositorio.\n2. Crea una rama para tu funcionalidad:\n\n\t```bash\n\tgit checkout -b feature/nueva-funcionalidad\n\t```\n\t\n3. Realiza tus cambios y haz un commit:\n\n\t```bash\n\tgit commit -m 'Añadir nueva funcionalidad'\n\t```\n\n4. Envía un pull request.\n\n---\n\nSi tienes preguntas o problemas, no dudes en abrir un issue en el repositorio.\n\n¡Gracias por ser parte de Futbolisimos!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristianpvp%2Ffutbolisimos-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcristianpvp%2Ffutbolisimos-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristianpvp%2Ffutbolisimos-web/lists"}