/dio-users-api

A API for accessing users' data at Digital Innovation One (DIO)

Primary LanguageTypeScriptMIT LicenseMIT

DIO User API šŸ±ā€šŸ‰

Este projeto Ć© uma API para gerar imagens das principais skills estudadas na plataforma DIO.

Podemos gerar a seguinte imagem indicando apenas o nome do usuƔrio:
Imagem com exemplo de Skills


A ideia foi inspirada no famoso Github Stats Card, usado para gerar imagens dinâmicas das linguagens mais usadas por cada desenvolvedor a partir da anÔlise de seus repositórios no Github.


Exemplo de uso em ambiente local šŸ”

  1. Para rodar o ambiente localmente, clone o repositório com o comando: git clone https://github.com/Pitossomo/dio-users-api.git

  2. Instale as dependĆŖncias com o comando npm install

  3. Na raiz do projeto, crie o arquivo .env.local com as variƔveis:

DIO_USERNAME=email.cadastrado.na.dio@exemplo.com
DIO_PASSWORD=senhaNaDIO
  1. Rode o servidor em modo de desenvolvimento com o comando: npm run dev

  2. No navegador, abra a pƔgina http://localhost:3000/api/v1/skills?username=pedro_h_teles, alterando o nome de usuƔrio como desejar

  3. Para encontrar o seu nome de usuƔrio, visite seu perfil e veja o nome na barra de endereƧo. Por exemplo, na imagem abaixo o nome do usuƔrio Ʃ pedro_h_teles: Captura de tela do perfil

  4. Na primeira visita, aguarde o tempo para o carregamento. Nas visitas futuras, o carregamento serÔ instantâneo, desde que o servidor não seja reinicializado e o nome do usuÔrio seja o mesmo.


Propostas futuras

Hospedar o projeto em um servidor para criar as imagens dinâmicamente. Por se tratar de um projeto com alta latência, o custo de hospedagem ficou bem alto, sendo


Observação importante ā—

A pÔgina dos usuÔrios é acessível apenas aos usuÔrios cadastradas na plataforma, e demanda autenticação.

Para possibilitar a coleta das informações, foi utilizada a biblioteca Puppeteer, o que demanda um alto tempo de processamento, jÔ que não existe API para acessar diretamente os dados do usuÔrio.

Sendo assim, a fim de minimizar o custo operacional e o impacto na plataforma, as imagens são salvas em cache no servidor durante 7 dias. A primeira requisição demora alguns segundos para ser gerada pelo servidor, e as requisições posteriores são resolvidas instantaneamente. Se o servidor reiniciar, o cache desaparece.