Sobre o projeto | Infra | Tecnologias | Novas Features | Como utilizar | Como contribuir | Layout | Licença |
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.
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
-
API com NodeJS
-
Web com ReactJS
-
Mobile com React Native/Expo
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:
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.
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.
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.
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.
# 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
eecoleta-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
# 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)
# 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
- 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 ❤️.
Veja o layout das aplicações mobile e web em Figma.
Lançado em 2020. Este projeto está sob a licença MIT
Desenvolvido com 💓 por Thalyson Rodrigues