thalysonalexr / ecoleta

:recycle: Projeto realizado durante a semana da Next Level Week by @Rocketseat

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

♻️ ecoleta

NextLevelWeek

✔️ NextLevelWeek 1.0 🚀 Done! ✔️

Repo size Author Languages Stars Last commit License

Sobre o projeto    |    Infra    |    Tecnologias    |    Novas Features    |    Como utilizar    |    Como contribuir    |    Layout    |    Licença    |   

ℹ️ Sobre o projeto

O projeto Ecoleta foi desenvolvido durante a primeira edição da Next Level Week realizado pela @Rocketseat. O projeto tem como intuíto ser um marketplace de coleta de resíduos, ajudando pessoas a encontrarem pontos de coletas mais próximos para descartarem diferentes tipos de lixos.

aplicação Web

aplicação mobile

🐋 Infra

Assim como em outros projetos utilizei Docker e Docker Compose para criar uma infraestrutura com as imagens do NodeJS e Postgres para desenvolvimento da API. Veja o arquivo docker-compose.yml

🚀 Tecnologias

🎉 Novas features

Durante a semana foi utilizado a lib Knex com o banco de dados sqlite, porém a fim de me aprofundar um pouco mais no universo TypeScript, optei pela lib TypeORM e utilizei o banco de dados postgres.

Também utilizei tsconfig-paths para obter caminhos mais "amigáveis" durante o desenvolvimento, e Jest para realizar testes de integração e unidade. Você pode ver o coverage clicando aqui.

Você também pode testar a API com o cliente de requisições Insomnia, basta clicar no botão abaixo para obter o workspace:

Run in Insomnia}

Além do Docker e as features mencionadas também foi desenvolvido ambientes de testes, desenvolvimento e produção, você pode ver como executá-los com scripts npm aqui.

ℹ️ Como utilizar

Para clonar este repo e executar a aplicação você precisa ter Git e Yarn instalados. Caso utilize este tutorial irá precisar do Docker e Docker compose ou ter o NodeJS e Posgres instalados.

banco de dados

Você precisará criar o arquivo de configuração do banco de dados, no TypeORM existem diversas maneiras para configurar eu optei pela configuração através de arquivo .json. Também deixei pronto um exemplo de configuração, basta renomear o arquivo removendo .example para que o TypeORM reconheça. Perceba que apenas as configurações de produção que eu deixei em aberto e as de development e test estão alinhadas a este repo.

variáveis de ambiente

Configurei 3 tipos de arquivos a serem lidos de acordo com o ambiente (teste, desenvolvimento e produção). O arquivo tem o mesmo formato que .env.example que deve ser replicado para .env, .env.dev, .env.test e lá você deverá colocar as configurações destes ambientes seja com Docker ou não.

instalar e executar a API

# clone o repo
$  git clone https://github.com/thalysonalexr/ecoleta.git

# vá até o diretório
$ cd ecoleta/server

# instale as dependências (ou deixe o docker fazer isto)
$ yarn install 

# suba os containers do nodejs e postgres
$ docker-compose up

# entre no bash do container do nodejs
docker exec -it ecoleta-server /bin/sh -c "[ -e /bin/bash ] && /bin/bash|| /bin/sh"

# execute o script para as migrations
~/server $ yarn migrations:dev:run

# e para os seeds
~/server $ yarn seeds:dev:run

# para testar basta executar
~/server $ yarn test

Infelizmente o TypeORM não cria o banco de dados, então antes de executar as migrações você precisa criar o banco ecoleta e ecoleta-test (para testes) na instancia do postgres criada pelo docker. Você também irá notar que as seeds executas na verdade são apenas migrações pois atualmente o TypeORM também não suporta tal funcionalidade.

Você pode ver o que faz outros scripts no package.json.

Caso você queira trabalhar apenas com as aplicações Web e Mobile, você pode estar consumindo da API diretamente em produção hospedada em Heroku Cloud.

Endpoint: https://api-ecollectage.herokuapp.com/v1/

Exemplo: https://api-ecollectage.herokuapp.com/v1/items

instalar e executar a aplicação Web

# clone o repo
$ git clone https://github.com/thalysonalexr/ecoleta.git

# vá até o diretório
$ cd ecoleta/web

# instale as dependências
$ yarn install

# execute
$ yarn start

# running on port 3000 (default)

instalar e executar a aplicação Mobile

# clone o repo
$ git clone https://github.com/thalysonalexr/ecoleta.git

# vá até o diretório
$ cd ecoleta/mobile

# instale as dependências
$ yarn install

# execute
$ yarn start

# O Expo será aberto, basta digitalizar o qrcode no terminal ou na página da exposição através do app expo instalado em seu dispositivo

# Se você tiver algum problema com as fontes, execute
$ expo install expo-font @expo-google-fonts/ubuntu @expo-google-fonts/roboto

🤔 Como contribuir?

  • Faça um fork do projeto;
  • Crie um branch com sua feature: git checkout -b my-feature;
  • Faça commit das adições/alterações: git commit -m 'feat: My new feature';
  • Faça um push para seu branch: git push -u origin my-feature;
  • Abra uma solicitação pull request para o repo original ❤️.

🌈 Layout

Veja o layout das aplicações mobile e web em Figma.

📝 Licença

Lançado em 2020. Este projeto está sob a licença MIT

Desenvolvido com 💓 por Thalyson Rodrigues

About

:recycle: Projeto realizado durante a semana da Next Level Week by @Rocketseat

License:MIT License


Languages

Language:TypeScript 88.3%Language:CSS 9.5%Language:JavaScript 1.1%Language:HTML 0.8%Language:Dockerfile 0.3%