{"id":22514058,"url":"https://github.com/gui-lfm/football-api-with-typescript","last_synced_at":"2026-05-02T09:32:17.246Z","repository":{"id":183789254,"uuid":"669944531","full_name":"Gui-lfm/football-api-with-typescript","owner":"Gui-lfm","description":"Projeto que simula a API de um site de futebol","archived":false,"fork":false,"pushed_at":"2023-07-25T21:00:20.000Z","size":670,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T03:26:33.283Z","etag":null,"topics":["backend","crud","mvc","mysql","sequelize","typescript"],"latest_commit_sha":null,"homepage":"","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/Gui-lfm.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":"2023-07-23T23:53:27.000Z","updated_at":"2023-07-26T02:04:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"c0c58cb8-602b-4727-b83d-9d2eaddfedc8","html_url":"https://github.com/Gui-lfm/football-api-with-typescript","commit_stats":null,"previous_names":["gui-lfm/football-api-with-typescript"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gui-lfm%2Ffootball-api-with-typescript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gui-lfm%2Ffootball-api-with-typescript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gui-lfm%2Ffootball-api-with-typescript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gui-lfm%2Ffootball-api-with-typescript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gui-lfm","download_url":"https://codeload.github.com/Gui-lfm/football-api-with-typescript/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245952635,"owners_count":20699515,"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":["backend","crud","mvc","mysql","sequelize","typescript"],"created_at":"2024-12-07T03:15:45.613Z","updated_at":"2026-05-02T09:32:17.205Z","avatar_url":"https://github.com/Gui-lfm.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## 🖥 Sobre o projeto:\n\n\u003cp align=\"justify\"\u003e Projeto realizado no final do módulo de backend do curso de desenvolvimento web da Trybe, realizado em junho de 2023. O projeto realizado é a criação de uma API que é consumida por um front-end já disponibilizado pela Trybe. A API fornece dados sobre partidas finalizadas e em andamento, bem como informações dos times e permite a autenticação de usuários. É possível adicionar uma partida, sendo necessário o uso de um token, portanto a pessoa deverá estar logada para fazer as alterações. o projeto está estruturado em containers, sendo os serviços de database e backend onde eu trabalhei, o frontend, como citado anteriormente, foi disponibilizado pela Trybe.\u003c/p\u003e\n\n## 🛠 Tecnologias e libs utilizadas:\n\u003cp\u003eAs seguintes ferramentas foram utilizadas na construção do projeto:\u003c/p\u003e\n\n- [Typescript](https://www.typescriptlang.org/)\n- [Sequelize](https://sequelize.org/)\n- [Mysql](https://www.mysql.com/)\n- [Docker](https://www.docker.com/)\n- [node.js](https://nodejs.org/en)\n- [express](https://expressjs.com/pt-br/)\n- [bcrypt](https://www.npmjs.com/package/bcrypt)\n- [JWT](https://jwt.io/)\n\n## ↗️ Endpoints:\n### Teams\n```\n/teams\n```\n- Utiliza o método do tipo GET.\n- Retorna um json com todos os times armazenados no banco de dados. cada time possui um id e um teamName.\n\n```\n/teams/:id\n```\n- Utiliza o método do tipo GET.\n- Retorna os dados do time especificado pelo id presente no parâmetro da URL.\n\n### Users e Login (credenciais de acesso)\n```\n/login\n```\n- Utiliza o método do tipo POST.\n- o enpoint não permite o acesso caso o email ou a senha não sejam informados, retornando um erro de código 400.\n- Caso o login seja realizado com sucesso, é retornado um token que será requisitado ao tentar adicionar ou alterar partidas.\n\n### Matches\n```\n/matches\n```\n- Utilizado o método do tipo GET:\n  - Retorna um json com todas as partidas presentes no banco de dados\n  - É possível filtrar as partidas, mostrando somente as em andamento ou finalizadas utilizado query strings: ex: ```matches?inProgress=true```\n- Utilizando o método do tipo POST:\n  - Deve inserir uma partida no banco de dados\n  - É necessário um token válido para que a inserção ocorra, caso contrário, a requisição retornará um erro de código 401.\n  - Não é possível inserir uma partida com dois times iguais ou com um time que não exista na tabela de times (/teams)\n  - Em caso de sucesso, retorna a partida inserida no banco de dados.\n```\n/matches/:id\n```\n- Utiliza o método do tipo PATCH.\n- Atualiza uma partida em andamento, sendo necessário um token válido para que a operação ocorra.\n- Caso o token não esteja presente ou não seja válido, retorna um erro de código 401\n```\n/matches/:id/finish\n```\n- Utiliza o método do tipo PATCH.\n- Finaliza uma partida em andamento, sendo necessário um token válido para que a operação ocorra.\n- Caso o token não esteja presente ou não seja válido, retorna um erro de código 401.\n\n### Leaderboards\n```\n/leaderboard/home\n```\n- Utilizado o método do tipo GET.\n- Retorna um json com as informações do desempenho dos times da casa\n- Partidas em andamento (não foram finalizadas) não são consideradas.\n```\n/leaderboard/away\n```\n- Utilizado o método do tipo GET.\n- Retorna um json com as informações do desempenho dos times visitantes.\n- Partidas em andamento (não foram finalizadas) não são consideradas.\n```\n/leaderboard\n```\n- Utilizado o método do tipo GET.\n- Retorna um json com as informações do desempenho geral dos times.\n- Partidas em andamento (não foram finalizadas) não são consideradas.\n\n## 👾Autor\n\n \u003ca href=\"https://github.com/Gui-lfm\"\u003e\n \u003cimg style=\"border-radius: 50%;\" src=\"https://avatars.githubusercontent.com/u/72154970?v=4\" width=\"100px;\" alt=\"\"/\u003e\n \u003cbr /\u003e\n \u003csub\u003e\u003cb\u003eGuilherme Lucena\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n \n ### ✉contato:\n\u003cdiv\u003e\n  \u003ca href=\"mailto:guilherme.lucena17@gmail.com\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/Gmail-D14836?style=for-the-badge\u0026logo=gmail\u0026logoColor=white\" target=\"_blank\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.linkedin.com/in/guilherme-lucena-fm94/\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\" target=\"_blank\"/\u003e\u003c/a\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgui-lfm%2Ffootball-api-with-typescript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgui-lfm%2Ffootball-api-with-typescript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgui-lfm%2Ffootball-api-with-typescript/lists"}