{"id":22781852,"url":"https://github.com/reinaldoper/api-nextjs","last_synced_at":"2025-03-30T14:40:48.180Z","repository":{"id":258309488,"uuid":"873704793","full_name":"reinaldoper/api-nextjs","owner":"reinaldoper","description":"Projeto feito usando NextJs contendo API backend e frontend.","archived":false,"fork":false,"pushed_at":"2024-10-21T15:35:38.000Z","size":6677,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-05T16:19:10.582Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/reinaldoper.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-16T15:22:13.000Z","updated_at":"2024-10-21T15:35:43.000Z","dependencies_parsed_at":"2024-10-18T11:51:29.491Z","dependency_job_id":"0524e0e2-e09c-45b6-bc54-df0869099dcf","html_url":"https://github.com/reinaldoper/api-nextjs","commit_stats":null,"previous_names":["reinaldoper/api-nextjs"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reinaldoper%2Fapi-nextjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reinaldoper%2Fapi-nextjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reinaldoper%2Fapi-nextjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reinaldoper%2Fapi-nextjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reinaldoper","download_url":"https://codeload.github.com/reinaldoper/api-nextjs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246333931,"owners_count":20760638,"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","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":[],"created_at":"2024-12-11T21:08:55.738Z","updated_at":"2025-03-30T14:40:48.154Z","avatar_url":"https://github.com/reinaldoper.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API de Atletas\n\n## Descrição\nEste projeto é uma API desenvolvida com Next.js e TypeScript para gerenciar informações de atletas, esportes e usuários, incluindo operações de CRUD e funcionalidades para relacionar atletas com esportes. A API possui rotas para criar, listar, atualizar e deletar atletas e esportes, além de autenticação e gerenciamento de usuários.\n\nExplore a documentação da API [aqui](https://apis-docs.codante.io/atletas-brasileiros).\n\n## Tecnologias Utilizadas\n- **Next.js**: Framework para React com suporte integrado para rotas de API.\n- **TypeScript**: Superset de JavaScript que adiciona tipagem estática.\n- **dotenv**: Gerenciamento de variáveis de ambiente.\n- **bcrypt**: Para hash de senhas.\n- **JWT**: Autenticação via JSON Web Tokens.\n- **MySQL**: Banco de dados relacional para armazenar informações de atletas, esportes e usuários.\n- **Docker**: Facilita a criação e gerenciamento de ambientes isolados.\n- **REST API**: Estrutura de endpoints para operações de CRUD.\n\n## Pré-requisitos\n- **Node.js** (v18 ou superior)\n- **npm** ou **yarn** para gerenciar pacotes\n- Banco de dados MySQL configurado\n\n## Instalação\n\n1. Clone o repositório:\n   ```bash\n   git clone \u003cURL\u003e\n   cd api-nextjs\n   ```\n\n2. Instale as dependências:\n   ```bash\n    npm install\n   ```\n\n3. Configure as variáveis de ambiente:\n\n- Crie um arquivo .env na raiz do projeto com as seguintes variáveis:\n  ```bash\n  MYSQL_ROOT_PASSWORD=seu-nome-preferencia\n  MYSQL_DATABASE=seu-nome-preferencia\n  MYSQL_USER=seu-nome-preferencia\n  MYSQL_PASSWORD=seu-nome-preferencia\n  DB_HOST=localhost\n  DB_DATABASE=seu-nome-preferencia\n  DB_PASSWORD=seu-nome-preferencia\n  DB_PORT=3306\n  DB_USER=seu-nome-preferencia\n  PORT=3001\n  JWT_SECRET=seu-nome-preferencia\n  ```\n\n4. Scripts Disponíveis:\n\n- npm run dev: Executa o projeto em modo de desenvolvimento.\n- npm run build: Compila o projeto para produção.\n- npm start: Executa a versão compilada em produção.\n- docker-compose up -d: Sobe o contêiner Docker com o banco de dados.\n- npm run dbreset: Inicializa ou reseta o banco de dados.\n\n## Rotas Disponíveis\n\n### Rotas de Atletas\n\n1. Criar Atleta\n\n- Rota: POST /api/athletes/athlete\n- Descrição: Cria um novo atleta.\n\n2. Listar Todos os Atletas\n\n- Rota: PATCH /api/athletes/athlete\n- Descrição: Retorna uma lista de todos os atletas.\n- Parâmetros da Query:\n- limit: Limita o número de resultados retornados (padrão: 10).\n\n3. Obter Atleta por ID\n\n- Rota: GET /api/athletes/[id]\n- Descrição: Retorna detalhes de um atleta específico por ID.\n\n4. Atualizar Atleta\n\n- Rota: PUT /api/athletes/athlete\n- Descrição: Atualiza os dados de um atleta existente.\n\n5. Deletar Atleta\n\n- Rota: DELETE /api/athletes/[id]\n- Descrição: Deleta um atleta específico por ID.\n\n6. Listar Atletas e Seus Esportes\n\n- Rota: GET /api/athletes/sport/[id]\n- Descrição: Retorna uma lista de atletas com detalhes dos esportes associados.\n\n\n### Rotas de Esportes\n\n1. Criar Esporte\n\n- Rota: POST /api/sports/sport\n- Descrição: Cria um novo esporte.\n\n2. Listar Todos os Esportes\n\n- Rota: GET /api/sports/sport\n- Descrição: Retorna uma lista de todos os esportes.\n\n3. Obter Esporte por ID\n\n- Rota: GET /api/sports/[id]\n- Descrição: Retorna detalhes de um esporte específico por ID.\n\n4. Atualizar Esporte\n\n- Rota: PUT /api/sports/[id]\n- Descrição: Atualiza os dados de um esporte existente.\n\n5. Deletar Esporte\n\n- Rota: DELETE /api/sports/[id]\n- Descrição: Deleta um esporte específico por ID.\n\n### Rotas de Usuários\n\n1. Registrar Usuário\n\n- Rota: POST /api/auth/register\n- Descrição: Cria um novo usuário.\n\n2. Login de Usuário\n\n- Rota: POST /api/auth/login\n- Descrição: Autentica o usuário e gera um token JWT.\n\n- services: Serviços que lidam com as operações no banco de dados.\n- types: Definições de tipos TypeScript para as entidades.\n\n### Contato\n- Para mais informações ou feedback, entre em contato pelo email: reinaldoper83@gmail.com.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freinaldoper%2Fapi-nextjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freinaldoper%2Fapi-nextjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freinaldoper%2Fapi-nextjs/lists"}