Skip to content

didifive/url-shortener-dio

 
 

Repository files navigation

Construindo Encurtador de URL

Bootcamp "Eduzz Fullstack Developer #2" - Digital Innovation One

Projeto desenvolvido com instruções de Alexia Pereira na trilha de estudo do Bootcamp "Eduzz Fullstack Developer #2" da dio.me.

Repository language count Made by Alexia Update by Didi GitHub last commit License

Node.js TypeScript

Link da base utilizada neste projeto: alexiadorneles/url-shortener-dio.


Rodando o projeto

  • npm install
  • npm run dev //para rodar versão de desenvolvimento
  • npm run build // para rodar build e versão de produção

Para configurar seu banco de dados MongoDB, basta atualizar a variável de ambiente MONGO_STRING_CONN que está no arquivo .env com sua string connection. A string normalmente é fornecida pelo provedor de serviço do banco de dados.


Abaixo seguem modificações feitas em relação ao projeto base:

  • Criado o método list para listar todas as URLs já encurtadas pela aplicação, utilizando o endpoint GET /;
  • Criado arquivo .env com variável MONGO_STRING_CONN para guardar a string de conexão ao banco, a URL e a porta que a aplicação utilizará;
  • Criado o arquivo .env.example como exemplo (template) do arquivo .env visto que este não ficará disponível no repositório remoto (GitHub);
  • Foi criada condição no arquivo Constants.ts do pacote config para evitar salvar porta quando não estiver em local host, no Heroku, mesmo setando a variável PORT, o mesmo gerava valores aleatórios;
  • No métido list do URLController, foi criado um forEach para que o atributo shortURL esteja alinhado com o servidor (localhost, Heroku etc).

Endpoints da API:

  • Encurtar URL: POST /shorten, com o JSON:
{ 
    "originURL": "https://exampleurl.com"
}
  • Listar todas as URLs já encurtadas: GET /
  • Recuperar/Redirecionar para URL original: GET /{hash}

Para hospedar o projeto no Heroku tive que realizar os seguintes passos:

  • 1- No arquivo package.json foi adicionado o atributo start dentro de scripts:
		"start": "node dist/index.js"
  • 2- Foi adicionado um novo item, o engine também no package.json, contendo as versões no npm e node:
	"engines": {
		"npm": "8.3.0",
		"node": "14.18.0"
	},
  • 3- Foram adicionadas as variáveis de ambiente no Heroku, sendo elas:
KEY VALUE
NODE_MODULES_CACHE false
USE_NPM_INSTALL true

Observações:

  • Não esquecer de criar as variáveis de ambiente do arquivo .env que utilizou no projeto local nas configurações do Heroku;
  • Caso tenha atualizado as versões do npm ou node no projeto local, então deve-se alterar as versões mencionadas no passo 2. Para confirmar a versão, basta rodar os comandos npm -v e node -v na pasta do projeto.

Fonte: When NPM miss with Heroku, How To Solve (npm ERR! Failed at the start script).


Links Interessantes: