Giter Club home page Giter Club logo

ecoleta's Introduction

♻️ 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

ecoleta's People

Contributors

thalysonalexr avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.