-
Back-end
- Servidor via express
- Armezenar dados de devs via DB não-relacional Mongoose.
- socket.io para enviar coordenadas latitude, longitude.
-
Front-end
- Desenvolvimento usando React.
- Uso do var navigator para geo-localização.
-
Mobile
- Desenvolvimento usando React Native.
- Redux e Hooks.
- React Navigation Stacks.
Um aplicativo para encontrar Devs com conhecimento em determinadas tecnologias, em um mapa, dentro de um raio de x km. O website cadastra Devs com dados do seu perfil no github e a sua localização (latitude, longitude). O app mobile mostra os Devs no mapa de geolocalização dentro da área pesquisada.
-
Back-end
- Iniciar DB:
- Cloud Atlas: MongoDB -> Cluster Omnistack
- MongoDB Compass (User: omnistack10 Senha: omnistack10)
mongoose.connect('mongodb+srv://omnistack10:omnistack10@omnistack-ufvxl.mongodb.net/week10? retryWrites=true&w=majority', { useNewUrlParser: true, useUnifiedTopology: true, })
- yarn dev
- Iniciar DB:
-
Front-end
- yarn start
-
Mobile 1.
Dia 1: Backend
- npm e yarn são gerenciador de pacotes.
- instalar novas ferramentas e novas bibliotecas.
- Ex. bibliotecas de fazer API com correios, emissão de NF, emitir boleto, pdf, etc
- index.js 1.
app.get('/', (request, response) => {
})
- request vem do frontend, response é o que devolve para o frontend.
const express = require('express');
const app = express();
app.get('/', (request, response) => {
return response.send('Hello World');
})
app.listen(3333);
- Terminal> node index.js (server)
- vide Browser: localhost:3333
return response.json({ message: 'Hello Omnistack'});
- json não pode ser string. Tem que ser vetor o u objeto (provavelmente converte em string).
- vide Browser: localhost:3333
- yarn add nodemon (server que atualiza)
- yarn nodemon index.js -> rodar o server que atualiza
- Criar yarn dev
"scripts": {
"dev": "nodemon index.js"
},
-
Download INsomnia
- insomnia.rest
- obs. alternativa: Postman
-
Query PArams: 1.
1.
app.get('/users', (request, response) => {
console.log(request.query);
// return response.send('Hello World');
return response.json({ message: 'Hello Omnistack'});
});
// Query Params: request.query (Filtros, ordenação, paginação...)
- console.log => terminal: { search: 'Diego' }
// Métodos http: get, post, put, delete
// Tipos de parametros:
// Query Params: request.query (Filtros, ordenação, paginação...)
// Route Params: request.params (Identificar um recurso na alteração ou remoção)
// Body: request.body (Dados para a criação ou alteração de um registro)
- não esquece => p/ express entender JSON:
app.use(express.json());
- DB -> MongoDB
- Build new cluster.
- COnectar com mongoose (yarn add mongoose etc).
- http://portquiz.net:27017/ serve para ver se a porta está OK, ou se está por tras de firewall.
- yarn add axios
- Mongo DB operators (Ex: $in usado em SearchController.js) -> procurar no Google.
- Dia 2
-
Entendendo o React 1.
-
yarn create react-app web
- ou npx create-react-app web
-
App.js
-
Lat e Long: 1.
-
navigator.geolocation.getCurrentPosition
- responsividade
@media (max-width: 650px) {
main ul{
grid-template-columns: 1fr;
}
}
- conexao backend
- yarn add cors
- cross origin resouce sharing
- backend -> index.js
- yarn add cors
const cors = require('cors');
app.use(cors());
- de volta ao front-end
- yarn add axios
- chamada api: 1.
-
Dia 3: Mobile
1. Instalação do Expo
1. yarn global add expo-cli
2. procurar no google:
1. yarn global path
1. https://yarnpkg.com/lang/en/docs/cli/global/
2. npm install -g expo-cli
3. Se não aparecer nos arquivos .zshrc, .bash_profile, .profile, .bashrc:
export PATH="$(yarn global bin):$PATH"
-
adicionar/escrever via terminal.
- expo init mobile
- 1a opção (blank)
- Y (via yarn)
- yarn start
-
para resolver adb problems no genymotion:
-
Iniciar o react native:
- terminal: pasta mobile -> code .
-
nao tem class nem ID nas propriedades dos compnentes.
-
Usa style.
-
Codar:
- criar src
- pages
- Main e Profile
- routes
- pages
- criar src
-
docs.expo.io
- Guides
- Routing & Navigation
- React Navigation
- https://github.com/react-navigation/react-navigation
- https://reactnavigation.org/docs/en/getting-started.html
- installing into an existing project
- yarn add react-navigation
- expo install react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context
- Hello React Navigation.
- yarn add react-navigation-stack
- yarn add @react-native-community/masked-view
- React Navigation
- Routing & Navigation
- Guides
-
routes.js
-
App.js
-
https://docs.expo.io/versions/latest/
- API Reference
- MapView
- expo install react-native-maps
- Location
- expo install expo-location
- vide Main.js
-
Colocar os Devs no mapa:
- vide Main
-
Docs: Webview
- expo install react-native-webview
import { WebView } from 'react-native-webview';
1. API Rest
1. yarn add axios
2.
- DIa 4: FUncionalidades avançadas
- yarn add socket.io
- Adição de web socket
- requisições http (get, post...etc)
- GET, POST, PUT, DELETE
- req: Frontend -> Backend -> RESPOSTA ao Front.
- back end mandar resposta sem req do front-> protocolo WebSocket
- Adição de web socket
- index.js 1.
- yarn add socket.io
const http = require('http');
1.
const server = http.Server(app);
1.
server.listen(3333);
- Criar websocket.js
- vide websocket e index.js
- Partiu mobile
- genymotion...gps...
- yarn start etc...run on device...
- yarn add socket.io-client
- vide api.js socket.js, Main.js -> setupWebsocket()
- console.log(socket.id) do backend (websocket.js) deve aparecer no terminal quando apertar a busca.
- vide api.js socket.js, Main.js -> setupWebsocket()