Aplicação desenvolvida junto a semana omnistack 11, que visa, criar um site que registra casos que interessam a ONGs. Como exemplo um cachorro foi atropelado e essa ONG necessita recursos para pagar o tratamento.
-
Começando projeto em nodejs
npm init -y
-
Rodando projeto
node index.js
-
Instalar express
npm install express
-
importando express
const express = require('express'); const app = express();
-
Abordagem Tradicional vs Abordagem SPA
-
npm
: instala um pacote -
npx
:executa um pacote
-
NodeJs e Express
- Rotas e recursos
- Métodos HTTP:
GET
: buscar/listar uma informação do back-endPOST
: criar uma informação no back-endPUT
: alterar uma informação no back-endDELETE
: deletar uma informação no back-end
- Tipos de Parametros:
- Query Params: Parâmetros nomeados enviados na rota após "?" (filtro, paginação); Ex: http://localhost:3333/users?name=João
- Route Params: Parametros utilizados para identificar recursos.
- Request Body: Corpo da requisição
-
Insomnia: Explicação sobre esta ferramenta
-
Nodemon:
npm install nodemon -D
- -D, pois é uma dependência de desenvolvimento.
- Diferenças entre banco de dados:
- SQL:MySQL, SQLite, PostgreSQL, Oracle, Microsoft SQL server.
- NoSQL: MongoDB, CouchDB, etc
-
Configurando banco de dados
-
Abordagem Driver: Utilizar linguagem SQL
-
Abordagem Query Builder: Utilizar códigos JavaScript, para acessar informações do banco. Usando knex, que é instalado usando
npm install knex --save
e utilzar Sqlite com SGBD, usando o comando
npm install sqlite3
tudo disponibilizado na documentação do knex. Após isso, rodar
npx knex init
-
Criação de um arquivo de rotas(routes.js), afim de desacoplar do arquivo index.
- Pensar nas entidades.
- ONG
- Caso(Incident)
- Funcionalides.
- Login de ONG
- Logout de ONG
- Cadastro de ONG
- Cadastrar novos casos
- Deletar casos
- Listar casos específicos de uma ONG
- Listar todos os casos.
- Entrar em contato com a ONG (WhatsApp, Email)
- knex
-
Acessar documentação sobre knex migrations
-
Acessar a parte sobre criação de tabelas.
-
criar uma migration:
npx knex migrate:make name_table
-
Ao terminar de configurar todos os bancos rodar:
npx knex migrate:latest
-
Método up do arquivo criado ao rodar o comando acima, serve para criar tabelas.
-
Método down usado para deletar tabelas
-
-
-
Construção do backend
-
Adicionando módulos
-
Upar para GitHub
-
Iniciar projeto
-
Instalando o comando de forma global
npm install -g create-react-app
-
Criando projeto
create-react-app frontend
-
-
Limpando estruturas
-
Conceitos React
- Componentes: É uma função que retorna HTML.
- JSX: (JavaScript XML)Scripts HTML dentro do JavaScrit
- Propriedades: São argumentos padrões que são passados como parâmetros para funções no React.
- Estado: Inicialização de uma variavel qualquer
- Imutabilidade: No react, para alterar o valor de uma variavel é preciso guardar em um estado.
-
Pagina de Login
-
Configurar rotas
-
Cadastro de ONGs
-
Listagem de casos
-
Cadastro de novo caso
-
Conectando aplicação a API -Na pasta do backend, fazer instalação do
cors
, rodando:npm install cors
-
Upar pro GitHub
-
Instalação do Expo
sudo npm install -g expo-cli
-
Criação de projeto React Native
expo init mobile
-
Executando projeto
- No celular
- Emulador
- Plataforma On-line: Expo Snack
-
Diferenças em relação ao ReactJS
- Elementos HTML
- Não utiliza tags HTML
- Semântica
<View />
: para quaisquer containers;<Text />
: para elementos textuais;- Não existe hierarquia de tag
- Estilização
- Flexbox: Já vem
display:flex
, por padrão para todos os elementos. - Propriedades: As estilizações como por exemplo
background-color: #FFF
do CSS, muda no React Native, pois as estilizações são passadas como objeto. Este comando por exemplo se tornabackgroundColor: '#FFF'
, ou seja a primeira letra da segunda palavra vai pra maiusculo. - Herança de estilos: Não existe, cada componente tem que possuir estilização própria.
- Estilização própria
- Flexbox: Já vem
- Elementos HTML
-
Estrutura de pastas.
-
Ícone e Splash Screen.
-
Configurando navegação.
- Instalação do react navigation
-
Página de casos.
-
Abrir WhatsApp e E-mail
- E-mail: usar expo-mail-composer, disponivel na documentaçaão do EXPO
- WhatsApp: usar Linking do react-native
-
Conexão com a API
-
Upar pro GitHub
-
Adicionar validação
-
Usar a biblioteca celebrate, que pode ser instalada com:
npm install celebrate
-
-
Adicionar testes
-
Por que fazer testes?
- Como saber que uma aplicação com mais de 1000 telas está funcional em todas.
-
TDD: (Test-driven Development)
-
Configurando jest.
-
Instalação:
npm install jest -D
-
Execução:
npx jest --init
-
-
Tipos de testes
- Teste Unitário: testa algo muito específico do código, não chega no banco de dados
- Teste de Integração: Testa a aplicação como um todo.
-
Configurando banco de testes.
-
Para executar os testes:
npm test
-
-
Instalando Supertest
npm install supertest -D
-
Testando rota de autenticação
-
-
Deploy
- Alternativas Backend:
- Alternativas Frontend:
- Qual escolher?
-
Estudos daqui para frente
- Padrões de código: ESlint, Pretier
- Autenticação JWT
- Styled-Components
-
Dicas para aproveitar melhor
- GitHub