Projeto desenvolvido para o evento Next Level Week da Rocketseat.
Esse projeto é sobre um site que te permite registrar locais de coleta seletiva para que a população possa os encontrar mais facilmente em suas cidades. Ele é dividido em duas partes: o back-end com uma API RESTful em NodeJS, Express (para requisições HTTP) e Knex (para consultas em bancos de dados), já o front-end foi feito com ReactJS. MySQL foi usado ao invés de SQLite para manipulação de banco de dados.Além da mudança no gerenciador de banco de dados, fiz mais duas alterações importantes:
O projeto original possui um mapa da Leaflet API e caixas de seleção com dados da IBGE API nelas (para cidades e estados do Brasil). Adicionei uma a mais, a Nominatim API, que pode obter coordenadas de um endereço e vice-versa. Dessa forma, a partir de um clique no mapa posso informar a rua, cidade e estado de um ponto.O site original não era muito responsivo para janelas de tamanhos diferentes, então solucionei isso com um pouco de CSS, utilizando media queries e propriedades do Flexbox.
Digite os seguintes comandos em seu terminal:
# Copie o repositório
$ git clone https://github.com/arturo32/NextLevelWeek.git
# Entre no repositório
$ cd NextLevelWeek
Nos arquivos NextLevelWeek/server/src/database/connection.ts e NextLevelWeek/server/knexfile.ts se assegure de que o "user" e "password" estão definidos de acordo com seu usuário e senha do MySQL.
Em seguida crie um banco de dados chamado "ecoleta" no MySQL. Se você usa MySQL pelo terminal, abra outro terminal e digite:
# Entre no MySQL
mysql -u root -p
# Crie o banco de dados
CREATE DATABASE ecoleta;
Agora de volta para o primeiro terminal, digite os seguintes comandos:
# Entre na pasta do servidor
$ cd server
# Instale as pendências (utilizando npm ou yarn)
$ npm install || yarn install
# Preencha o banco de dados com tabelas usando knex (com npm ou yarn)
npm run knex:migrate || yarn knex:migrate
# Rode a aplicação (usando npm ou yarn)
$ npm run dev || yarn dev
Se encontrar problemas com o npm run knex:migrate
(ER_NOT_SUPPORTED_AUTH_MODE), digite os comandos abaixo em outro terminal:
# Entre no MySQL
mysql -u root -p
# Crie o banco de dados
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Onde "password" será sua senha atual (ou nova senha!) para acesso root do MySQL.
Acesse a API por meio de http://localhost:3333/
# Entre na página web
$ cd web
# Instale as pendências (utilizando npm ou yarn)
$ npm install || yarn install
# Rode a aplicação (usando npm ou yarn)
$ npm start || yarn start
Acesse no seu navegador através do http://localhost:3000/