Escolar Documentos
Profissional Documentos
Cultura Documentos
DESENVOLVEDOR
FULL-STACK
TUDO QUE VOCÊ PRECISA APRENDER
ÍNDICE
Fundamentos de Programação
Front-end
Back-end
www.fullstackmaster.com.br
03
INTRODUÇÃO
O Desenvolvimento Full-Stack é uma área de
tecnologia em constante evolução que
permite aos desenvolvedores criar aplicações
web completas, desde o front-end (interface
do usuário) até o back-end (servidor e banco
de dados). Isso significa que, como
Desenvolvedor Full-Stack, você será
responsável por todos os aspectos da
aplicação, desde a sua aparência e
funcionalidade até a segurança e
escalabilidade.
www.fullstackmaster.com.br
04
Você também receberá dicas práticas sobre
como se tornar um Desenvolvedor Full-Stack
bem-sucedido e como manter-se atualizado
com as novidades da indústria.
www.fullstackmaster.com.br
05
Salários atraentes: A demanda por
Desenvolvedores Full-Stack é alta, o que
significa que as empresas estão dispostas a
pagar bons salários para atrair e reter
profissionais talentosos. De acordo com
pesquisas recentes, os salários médios para
Desenvolvedores Full-Stack variam entre
US$70.000 e US$120.000 por ano.
www.fullstackmaster.com.br
06
Além disso, você terá a oportunidade de
solucionar problemas complexos e ajudar a
melhorar a vida das pessoas através da
tecnologia.
www.fullstackmaster.com.br
07
Frameworks e bibliotecas front-end: Como
React, Angular ou Vue, estes são ferramentas
que facilitam a construção de aplicações web
mais complexas. Você precisa conhecer pelo
menos um desses frameworks e entender
como funcionam.
www.fullstackmaster.com.br
08
Versionamento de código: Você precisa
entender como controlar suas versões de
código e colaborar com outros
desenvolvedores, com ferramentas como Git.
www.fullstackmaster.com.br
09
FUNDAMENTOS DA
1 PROGRAMAÇÃO
Neste capítulo, você aprenderá sobre os
fundamentos da programação e como eles se
aplicam ao desenvolvimento Full-Stack.
www.fullstackmaster.com.br
10
Uma variável é uma espaço na memória do
computador onde você pode armazenar
informações.
Lógica de Programação
Algoritmos e Estruturas de Dados
Linguagem de Programação
www.fullstackmaster.com.br
11
LÓGICA DE PROGRAMAÇÃO
www.fullstackmaster.com.br
12
Para desenvolver suas habilidades de lógica
de programação, você pode começar
resolvendo problemas simples. Por exemplo,
você pode escrever um programa que calcule
a média de vários números. Conforme você se
familiariza com a lógica de programação,
você pode avançar para problemas mais
complexos, como a criação de aplicativos de
e-commerce ou sistemas de gerenciamento
de banco de dados.
www.fullstackmaster.com.br
13
As estruturas de dados, por sua vez, são
estruturas lógicas que armazenam e
organizam dados de forma eficiente.
www.fullstackmaster.com.br
14
em largura ou profundidade, ou estruturas de
dados mais complexas, como árvores binárias
ou grafos.
LINGUAGEM DE PROGRAMAÇÃO
www.fullstackmaster.com.br
15
Se você está começando do zero, é
aconselhável começar com uma linguagem de
programação fácil de aprender, como
JavaScript ou Python. Ambas as linguagens
têm uma comunidade ativa de
desenvolvedores e muitos recursos
disponíveis para ajudá-lo a aprender e
praticar.
www.fullstackmaster.com.br
16
Veja os motivos...
www.fullstackmaster.com.br
17
DESENVOLVIMENTO
2 FRONT-END
O Desenvolvimento Front-End é uma área
importante do desenvolvimento de software
que se concentra na criação da interface do
usuário (UI) e na experiência do usuário (UX)
em aplicativos web e móveis.
www.fullstackmaster.com.br
18
JavaScript é uma linguagem de programação
que permite a criação de interações
dinâmicas e animações na web. É usado para
adicionar funcionalidades como formulários
interativos, modais e carrinhos de compras a
uma página da web.
www.fullstackmaster.com.br
19
O QUE É HTML E COMO USÁ-LO
www.fullstackmaster.com.br
20
Aqui estão alguns exemplos práticos de como
usar HTML para desenvolver sites:
Criar um título:
<h1>Meu Título</h1>
Adicionar um parágrafo:
Criar um formulário:
<form action="enviar-form.php">
<label for="nome">Nome:</label>
<input type="text" id="nome" name="nome">
<label for="email">Email:</label>
<input type="email" id="email" name="email">
www.fullstackmaster.com.br
21
Este é apenas um rápido exemplo do poder e
flexibilidade do HTML. Aprender HTML é
fundamental para qualquer pessoa interessada em
se tornar um desenvolvedor front-end ou full-
stack, pois ele é a base da construção de qualquer
site na web.
www.fullstackmaster.com.br
22
Este é apenas um rápido exemplo do poder e
flexibilidade do HTML. Aprender HTML é
fundamental para qualquer pessoa interessada em
se tornar um desenvolvedor front-end ou full-
stack, pois ele é a base da construção de qualquer
site na web.
www.fullstackmaster.com.br
23
EXEMPLOS PRATICOS DO USO DO CSS
h1 {
font-family: Arial, sans-serif;
font-size: 36px;
color: blue;
background-color: yellow;
}
.container {
display: flex;
justify-content: center;
align-items: center;
}
www.fullstackmaster.com.br
24
.box {
float: left;
width: 50%;
height: 50px;
background-color: lightblue;
}
body {
background-color: #f2f2f2;
}
www.fullstackmaster.com.br
25
O HTML é uma linguagem de marcação que define
a estrutura e o conteúdo de uma página da web,
enquanto o CSS é uma linguagem de folhas de
estilo que permite aos desenvolvedores estilizar e
formatar essas páginas.
<html>
<head>
<style>
h1 {
text-align: center;
color: blue;
}
p{
text-align: center;
font-size: 18px;
}
img {
display: block;
margin: 0 auto;
width: 50%;
}
www.fullstackmaster.com.br
26
.buy-button {
display: block;
margin: 20px auto;
padding: 10px 20px;
background-color: green;
color: white;
border-radius: 5px;
text-align: center;
}
</style>
</head>
<body>
<h1>Meu Produto</h1>
<p>Subtítulo do Produto</p>
<img src="product.jpg" alt="Produto">
<a href="#" class="buy-button">Comprar</a>
</body>
</html>
www.fullstackmaster.com.br
27
JAVASCRIPT E SEU PODER NA WEB
www.fullstackmaster.com.br
28
Você também aprenderá sobre o poder dos
objetos em JavaScript, incluindo como criar e
manipular objetos, herança e prototype. Além
disso, abordaremos tópicos avançados, como o
uso de bibliotecas e frameworks populares, como
React e Angular, e a criação de aplicativos da web
usando Node.js.
www.fullstackmaster.com.br
29
Mas antes de mergulhar nos recursos avançados
da linguagem, é fundamental conhecer suas
bases. A sintaxe do JavaScript é simples, mas ao
mesmo tempo poderosa, e é por isso que é
importante que se tenha um bom conhecimento
dela.
Por exemplo:
var x = 10;
var y = 20;
var z = x + y;
www.fullstackmaster.com.br
30
Isso é importante porque permite que você
agrupe várias instruções em uma única seção e
garanta que elas sejam executadas juntas. Por
exemplo:
function soma(x, y) {
return x + y;
}
www.fullstackmaster.com.br
31
Variáveis e tipos de dados em JavaScript
www.fullstackmaster.com.br
32
Undefined é um valor especial que indica que
uma variável não foi definida. Por exemplo:
let x;
console.log(x); // Output: undefined
let y = null;
console.log(y); // Output: null
let id = Symbol();
www.fullstackmaster.com.br
33
Manipulação de Elementos da Página Web com
JavaScript
Por exemplo:
botao.classList.add("ativo");
botao.classList.remove("ativo");
www.fullstackmaster.com.br
34
Por exemplo:
botao.addEventListener("click", function() {
paragrafo.innerHTML = "Você clicou no botão!";
});
var nome =
document.querySelector("input[name=nome]").val
ue;
var email =
document.querySelector("input[name=email]").val
ue;
www.fullstackmaster.com.br
35
www.fullstackmaster.com.br
36
www.fullstackmaster.com.br
37
var carro = {
marca: "Tesla",
modelo: "Model S",
ano: 2020,
acelerar: function() {
console.log("Acelerando...");
}
};
www.fullstackmaster.com.br
38
www.fullstackmaster.com.br
39
Veiculo.prototype.acelerar = function() {
console.log("Acelerando...");
};
Carro.prototype =
Object.create(Veiculo.prototype);
Carro.prototype.constructor = Carro;
www.fullstackmaster.com.br
40
BIBLIOTECAS FRONT-END
www.fullstackmaster.com.br
41
Vue, por outro lado, é uma biblioteca JavaScript
de código aberto que também utiliza uma
abordagem baseada em componentes. Ele é
conhecido por sua simplicidade e facilidade de
uso, além de sua grande variedade de recursos e
bibliotecas de terceiros. Ele também possui uma
documentação detalhada e uma forte comunidade
de desenvolvedores, tornando-o uma escolha
popular para projetos front-end.
www.fullstackmaster.com.br
42
REACT: O FRAMEWORK FRONT-END QUE VOCÊ
PRECISA CONHECER
O que é React?
www.fullstackmaster.com.br
43
Com o React, os desenvolvedores podem criar
componentes de UI reutilizáveis e escaláveis, que
se atualizam automaticamente quando o estado
da aplicação é alterado.
www.fullstackmaster.com.br
44
4. Grande comunidade: O React tem uma grande
comunidade de desenvolvedores, o que significa
que há muitos recursos e ferramentas disponíveis
para ajudá-lo a criar suas aplicações.
www.fullstackmaster.com.br
45
Exemplo prático
function TaskList(props) {
const { tasks } = props;
return (
<ul>
{tasks.map((task) => (
<li key={task.id}>{task.title}</li>
))}
</ul>
);
}
www.fullstackmaster.com.br
46
Em seguida, usamos o método map do JavaScript
para percorrer o array de tarefas e gerar uma lista
de itens HTML (<li>) para cada tarefa. O atributo
key é usado pelo React para identificar de forma
única cada item da lista.
function App() {
const tasks = [
{ id: 1, title: 'Comprar pão' },
{ id: 2, title: 'Lavar roupa' },
{ id: 3, title: 'Estudar React' },
];
return (
<div>
<h1>Minhas Tarefas</h1>
<TaskList tasks={tasks} />
</div>
);
}
www.fullstackmaster.com.br
47
Nesse exemplo, importamos nosso componente
TaskList e o usamos dentro do componente App.
Passamos o array de tarefas tasks como
propriedade para o componente TaskList.
www.fullstackmaster.com.br
48
VUE.JS: A BIBLIOTECA JAVASCRIPT PARA
CRIAÇÃO DE INTERFACES DE USUARIOS
Eficiência do Vue.js
www.fullstackmaster.com.br
49
Para que serve o Vue.js?
www.fullstackmaster.com.br
50
<template>
<div class="search-bar">
<input type="text" v-model="searchTerm"
@keydown.enter="search" placeholder="Buscar
produto...">
<button @click="search">Buscar</button>
</div>
</template>
<script>
export default {
data() {
return {
searchTerm: ''
}
},
methods: {
search() {
// lógica de busca do produto
}
}
}
</script>
www.fullstackmaster.com.br
51
<template>
<div class="product-list">
<search-bar></search-bar>
<div class="product-items">
<!-- lista de produtos -->
</div>
</div>
</template>
<script>
import SearchBar from './SearchBar.vue'
export default {
components: {
SearchBar
}
}
</script>
www.fullstackmaster.com.br
52
ANGULAR JS: CRIANDO APLICAÇÕES WEB DE
FORMA INTERATIVA E DINÂMICA
www.fullstackmaster.com.br
53
Por que usar o Angular JS?
www.fullstackmaster.com.br
54
1. Instale o Angular JS
www.fullstackmaster.com.br
55
Para começar, vamos criar um exemplo simples
de uma lista de tarefas. A lista terá um formulário
para adicionar novas tarefas e a lista de tarefas
existentes. Vamos lá!
1. Configurando o ambiente
www.fullstackmaster.com.br
56
<!doctype html>
<html ng-app="taskApp">
<head>
<title>Lista de Tarefas</title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap
/3.3.7/css/bootstrap.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/angula
rjs/1.6.9/angular.min.js"></script>
<script src="https://code.jquery.com/jquery-
3.2.1.min.js"></script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/
3.3.7/js/bootstrap.min.js"></script>
</head>
<body ng-controller="taskController">
...
</body>
</html>
2. Criando o controlador
www.fullstackmaster.com.br
57
var app = angular.module("taskApp", []);
app.controller("taskController", function($scope) {
$scope.tasks = [];
$scope.addTask = function() {
$scope.tasks.push($scope.newTask);
$scope.newTask = "";
};
});
3. Adicionando o formulário
www.fullstackmaster.com.br
58
<div class="container">
<h1>Lista de Tarefas</h1>
<form ng-submit="addTask()">
<div class="form-group">
<label for="newTask">Nova Tarefa:
</label>
<input type="text" class="form-control"
id="newTask" ng-model="newTask">
</div>
<button type="submit" class="btn btn-
primary">Adicionar Tarefa</button>
</form>
<hr>
<ul class="list-group">
<li class="list-group-item" ng-repeat="task
in tasks">{{ task }}</li>
</ul>
</div>
www.fullstackmaster.com.br
59
4. Testando o exemplo
www.fullstackmaster.com.br
60
describe('TaskController', function() {
beforeEach(module('taskApp'));
beforeEach(inject(function(_$controller_,
_$rootScope_) {
$controller = _$controller_;
$rootScope = _$rootScope_;
}));
describe('addTask', function() {
it('should add a task to the list', function() {
var $scope = $rootScope.$new();
var controller =
$controller('taskController', { $scope: $scope });
expect($scope.tasks).toContain('Test
task');
});
});
});
www.fullstackmaster.com.br
61
Além disso, podemos fazer testes de integração
para testar se o formulário está funcionando
corretamente. Um exemplo de teste de integração
seria simular a digitação de uma tarefa no campo
de texto e verificar se ela é exibida corretamente
na lista após ser adicionada.
www.fullstackmaster.com.br
62
DESENVOLVIMENTO
3 BACK-END
O back-end é uma parte fundamental de
qualquer aplicação web. É responsável por
gerenciar a lógica do negócio, o
armazenamento de dados e a comunicação
com outras partes da aplicação, como o
front-end. Para que o back-end funcione
corretamente, é necessário utilizar uma
linguagem de servidor adequada, um banco
de dados eficiente e API's bem construídas.
www.fullstackmaster.com.br
63
Cada banco de dados tem suas próprias
características e benefícios. MySQL é uma escolha
popular para aplicações de grande escala que
exigem alta disponibilidade e confiabilidade,
enquanto o MongoDB é uma escolha popular para
projetos que exigem flexibilidade e
escalabilidade.
www.fullstackmaster.com.br
64
LINGUAGENS DE SERVIDOR
1. Node.js
www.fullstackmaster.com.br
65
2. Ruby on Rails
3. Django
4. PHP
5. Java
www.fullstackmaster.com.br
66
www.fullstackmaster.com.br
67
1. Instale o Socket.io e o Express:
app.use(express.static(__dirname + '/public'));
socket.on('disconnect', () => {
console.log('Usuário desconectado');
});
});
http.listen(3000, () => {
console.log('Servidor rodando na porta 3000');
});
www.fullstackmaster.com.br
68
1. Instale o Socket.io e o Express:
app.use(express.static(__dirname + '/public'));
socket.on('disconnect', () => {
console.log('Usuário desconectado');
});
});
http.listen(3000, () => {
console.log('Servidor rodando na porta 3000');
});
www.fullstackmaster.com.br
69
3. Crie um arquivo index.html com o seguinte
código:
<!DOCTYPE html>
<html>
<head>
<title>Sistema de Chat em Tempo Real</title>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-
3.6.0.min.js"></script>
<script>
$(function () {
var socket = io();
$('form').submit(function(e) {
e.preventDefault();
socket.emit('chat message',
$('#mensagem').val());
$('#mensagem').val('');
return false;
});
www.fullstackmaster.com.br
70
<input id="mensagem" autocomplete="off" />
<button>Enviar</button>
</form>
</body>
</html>
node index.js
www.fullstackmaster.com.br
71
BANCO DE DADOS
www.fullstackmaster.com.br
72
Neste capítulo, vamos explorar os diferentes
tipos de bancos de dados e suas principais
características. Além disso, vamos mostrar
exemplos de como utilizar alguns dos bancos de
dados mais populares, incluindo o MySQL,
MongoDB e PostgreSQL, para armazenar e
recuperar informações em aplicações web. Com
essas informações, você poderá escolher o tipo de
banco de dados mais adequado para o seu projeto
e implementá-lo com confiança.
www.fullstackmaster.com.br
73
Além disso, o MySQL oferece uma ampla gama de
recursos avançados, como replicação, clustering e
recuperação de desastres.
www.fullstackmaster.com.br
74
Em resumo, o MySQL é um banco de dados
confiável, flexível, escalável e seguro, que
oferece excelente desempenho e eficiência. É
uma excelente escolha para aplicações web que
requerem grande capacidade de armazenamento e
alta disponibilidade.
www.fullstackmaster.com.br
75
Uma das principais vantagens do MongoDB é sua
flexibilidade. Ele suporta vários tipos de dados,
incluindo números, strings, datas, objetos, arrays
e muito mais. Além disso, ele não requer uma
estrutura de tabela pré-definida, o que significa
que os dados podem ser adicionados ou
modificados sem a necessidade de reestruturar o
banco de dados.
www.fullstackmaster.com.br
76
Além disso, o MongoDB é capaz de se integrar
com outras ferramentas de gerenciamento, como
o MongoDB Compass, que permite visualizar e
manipular os dados de forma mais fácil.
www.fullstackmaster.com.br
77
www.fullstackmaster.com.br
78
O PostgreSQL também é conhecido por sua
segurança. Ele suporta vários recursos de
segurança, como autenticação, criptografia de
dados em trânsito e em repouso, e controle de
acesso baseado em papéis. Além disso, ele tem
uma comunidade ativa e uma equipe dedicada de
desenvolvedores que trabalham continuamente
para melhorar sua segurança e estabilidade.
www.fullstackmaster.com.br
80
www.fullstackmaster.com.br
81
www.fullstackmaster.com.br
82
DESENVOLVIMENTO
4 DE APLICAÇÕES WEB
Neste capítulo, vamos explorar o
desenvolvimento de aplicações web, desde a
criação de uma aplicação full-stack completa
até o processo de testes em desenvolvimento
de software e deploy de aplicações.
www.fullstackmaster.com.br
83
CRIAÇÃO DE UMA APLICAÇÃO FULL-STACK
COMPLETA
Frontend: React.js
Backend: Node.js com o framework Express.js
Banco de Dados: MongoDB
Node.js
MongoDB
www.fullstackmaster.com.br
84
Editor de código de sua preferência (VS Code,
Sublime Text, etc.)
npm init -y
npm install express body-parser cors mongoose
app.use(cors());
app.use(bodyParser.json());
mongoose.connect('mongodb://localhost:27017/to
do', { useNewUrlParser: true, useUnifiedTopology:
true });
const connection = mongoose.connection;
www.fullstackmaster.com.br
85
connection.once('open', () => {
console.log('MongoDB database connection
established successfully');
});
app.listen(port, () => {
console.log(`Server is running on port: ${port}`);
});
www.fullstackmaster.com.br
86
const Task = mongoose.model('Task', taskSchema);
module.exports = Task;
www.fullstackmaster.com.br
87
router.route('/add').post((req, res) => {
const description = req.body.description;
const completed = req.body.completed;
newTask.save()
.then(() => res.json('Task added!'))
.catch(err => res.status(400).json(`Error: ${err}`));
});
task.save()
.then(() => res.json('Task updated!'))
.catch(err => res.status(400).json(`Error: ${err}`));
})
.catch(err => res.status(400).json(`Error: ${err}`));
});
module.exports = router;
www.fullstackmaster.com.br
88
Esse código cria as rotas necessárias para a nossa
API, incluindo rotas para listar todas as tarefas, listar
uma tarefa específica, adicionar uma nova tarefa,
excluir uma tarefa e atualizar uma tarefa existente.
this.deleteTask = this.deleteTask.bind(this);
this.state = {
description: '',
completed: false,
}
}
www.fullstackmaster.com.br
componentDidMount() {
89
axios.get(`http://localhost:4000/tasks/${this.props.matc
h.params.id}`)
.then(response => {
this.setState({
description: response.data.description,
completed: response.data.completed,
})
})
.catch(error => {
console.log(error);
});
}
deleteTask() {
axios.delete(`http://localhost:4000/tasks/${this.props.m
atch.params.id}`)
.then(response => {
console.log(response.data);
});
this.props.history.push('/');
}
render() {
return (
<div>
<h3>{this.state.description}</h3>
<p>Completed: {this.state.completed ? 'Yes' : 'No'}
</p>
<button onClick={this.deleteTask}>Delete
Task</button>
</div>
)
}
} www.fullstackmaster.com.br
Esse código cria um componente React que mostra os 90
detalhes de uma tarefa e permite que o usuário a
exclua.
this.onChangeDescription =
this.onChangeDescription.bind(this);
this.onChangeCompleted =
this.onChangeCompleted.bind(this);
this.onSubmit = this.onSubmit.bind(this);
this.state = {
description: '',
completed: false,
}
}
componentDidMount() {
axios.get(`http://localhost:4000/tasks/${this.props.matc
h.params.id}`)
.then(response => {
this.setState({
description: response.data.description,
completed: response.data.completed,
})
}) www.fullstackmaster.com.br
.catch(error => {
console.log(error); 91
});
}
onChangeDescription(e) {
this.setState({
description: e.target.value
});
}
onChangeCompleted(e) {
this.setState({
completed: e.target.checked
});
}
onSubmit(e) {
e.preventDefault();
const task = {
description: this.state.description,
completed: this.state.completed,
}
axios.post(`http://localhost:4000/tasks/update/${this.pr
ops.match.params.id}`, task)
.then(res => console.log(res.data));
this.props.history.push('/');
}
render() {
return (
<div>
www.fullstackmaster.com.br
<h3>Edit Task</h3>
92
<form onSubmit={this.onSubmit}>
<div className="form-group">
<label>Description: </label>
<input type="text"
className="form-control"
value={this.state.description}
onChange={this.onChangeDescription}
/>
</div>
<div className="form-group">
<div className="form-check">
<input className="form-check-input"
type="checkbox"
checked={this state.completed}
onChange={this.onChangeCompleted}
/>
<label className="form-check-
label">Completed</label>
</div>
</div>
<div className="form-group">
<input type="submit" value="Update Task"
className="btn btn-primary" />
</div>
</form>
</div>
)
}
}
www.fullstackmaster.com.br
Esse código cria um componente React que permite 93
editar uma tarefa existente.
```javascript
import React from 'react';
import axios from 'axios';
this.onChangeDescription =
this.onChangeDescription.bind(this);
this.onSubmit = this.onSubmit.bind(this);
this.state = {
description: '',
completed: false,
}
}
onChangeDescription(e) {
this.setState({
description: e.target.value
});
}
onSubmit(e) {
e.preventDefault();
www.fullstackmaster.com.br
const task = {
description: this.state.description, 94
completed: this.state.completed,
}
axios.post('http://localhost:4000/tasks/add', task)
.then(res => console.log(res.data));
this.setState({
description: '',
completed: false,
})
}
render() {
return (
<div>
<h3>Create New Task</h3>
<form onSubmit={this.onSubmit}>
<div className="form-group">
<label>Description: </label>
<input type="text"
className="form-control"
value={this.state.description}
onChange={this.onChangeDescription}
/>
</div>
<div className="form-group">
<input type="submit" value="Create Task"
className="btn btn-primary" />
</div>
</form>
</div>
)
}
}
www.fullstackmaster.com.br
95
Esse código cria um componente React que permite criar
uma nova tarefa.
function App() {
return (
<Router>
<div className="container">
<nav className="navbar navbar-expand-lg navbar-
light bg-light">
<Link to="/" className="navbar-brand">Task
Manager</Link>
<div className="collpase navbar-collapse">
<ul className="navbar-nav mr-auto">
<li className="navbar-item">
<Link to="/" className="nav-
link">Tasks</Link>
</li>
www.fullstackmaster.com.br
96
<li className="navbar-item">
<Link to="/create" className="nav-
link">Create Task</Link>
</li>
</ul>
</div>
</nav>
<br />
<Route path="/" exact component={TaskList} />
<Route path="/edit/:id" component={EditTask} />
<Route path="/create" component={CreateTask} />
</div>
</Router>
);
}
node server.js
www.fullstackmaster.com.br
97
npm install
npm start
http://localhost:3000/
www.fullstackmaster.com.br
98
TESTES EM DESENVOLVIMENTO DE SOFTWARE
www.fullstackmaster.com.br
99
Passo 3: Testes de integração
www.fullstackmaster.com.br
100
Passo 5: Testes de desempenho
www.fullstackmaster.com.br
101
DEPLOY DE APLICAÇÕES
Exemplo Prático
https://devcenter.heroku.com/articles/heroku-cli e siga
as instruções para instalar o CLI de acordo com o seu
sistema operacional.
www.fullstackmaster.com.br
102
O deploy de uma aplicação consiste em disponibilizá-
la em um servidor de produção para que possa ser
acessada pelos usuários. Neste capítulo, mostraremos
um passo a passo para realizar o deploy de uma
aplicação web em um servidor.
Exemplo Prático
https://devcenter.heroku.com/articles/heroku-cli e siga
as instruções para instalar o CLI de acordo com o seu
sistema operacional.
www.fullstackmaster.com.br
103
Passo 3: Preparação da aplicação
www.fullstackmaster.com.br
git add .
git commit -m "Initial commit"
104
git push heroku master
https://<nome-do-app>.herokuapp.com/
www.fullstackmaster.com.br
105
É importante lembrar que o deploy é apenas uma etapa
do ciclo de vida da aplicação, e que é necessário estar
sempre atento a possíveis atualizações e melhorias, a
fim de garantir que a aplicação continue funcionando
de forma satisfatória e atendendo às necessidades dos
usuários.
www.fullstackmaster.com.br
106
FERRAMENTAS E
5 RECURSOS ADICIONAIS
O desenvolvimento de software é uma área
em constante evolução, e novas ferramentas
e recursos são criados para tornar o processo
de desenvolvimento mais eficiente e
produtivo.
www.fullstackmaster.com.br
107
GERENCIAMENTO DE VERSÃO DE CÓDIGO
www.fullstackmaster.com.br
108
O Git funciona com o conceito de "branches"
(ramificações), permitindo que os desenvolvedores
trabalhem em diferentes versões do código
simultaneamente sem interferir no trabalho dos
outros. O código é mesclado (merged) no ramo
principal (main) após a revisão e testes adequados.
www.fullstackmaster.com.br
109
As principais ferramentas que os desenvolvedores
utilizam para trabalhar com o Git são a linha de
comando e as interfaces gráficas (GUIs).
www.fullstackmaster.com.br
110
COM O EXEMPLO DA APLICAÇÃO FULL-STACK QUE
DESENVOLVEMOS ANTERIORMENTE, VAMOS
MOSTRAR COMO UTILIZAR O GIT PARA GERENCIAR
AS DIFERENTES VERSÕES DO CÓDIGO.
git init
git add .
www.fullstackmaster.com.br
111
git commit -m "Mensagem do commit"
git add .
www.fullstackmaster.com.br
112
git commit -m "Mensagem do commit"
www.fullstackmaster.com.br
113
Isso enviará todas as alterações do seu branch minha-
feature para o repositório remoto no GitHub. Se você
quiser enviar as alterações do seu branch atual (o que
você está atualmente trabalhando), você pode usar o
seguinte comando:
www.fullstackmaster.com.br
114
HOSPEDAGEM DE APLICAÇÕES
www.fullstackmaster.com.br
115
www.fullstackmaster.com.br
116
Com a configuração completa, podemos implantar
nossa aplicação na Heroku usando o comando git push
heroku master. Isso fará com que nossa aplicação seja
enviada para a plataforma e configurada
automaticamente.
www.fullstackmaster.com.br
117
1. Introdução à AWS
www.fullstackmaster.com.br
118
(Elastic Compute Cloud). Para configurar uma instância
EC2, siga os seguintes passos:
www.fullstackmaster.com.br
119
Passo 1: Acesse o console da AWS e selecione o
serviço RDS.
www.fullstackmaster.com.br
120
1. Acesse o console da AWS e selecione o serviço EC2.
www.fullstackmaster.com.br
121
METODOLOGIAS AGEIS
www.fullstackmaster.com.br
122
SCRUM
www.fullstackmaster.com.br
123
Durante o Sprint, são realizadas reuniões diárias para
acompanhar o progresso e identificar possíveis
impedimentos.
www.fullstackmaster.com.br
124
3. Daily Scrum: reuniões diárias são realizadas para
acompanhar o progresso e identificar possíveis
impedimentos. Durante o Daily Scrum, cada membro da
equipe deve responder a três perguntas básicas: o que
foi feito desde a última reunião, o que será feito até a
próxima reunião e quais impedimentos estão
atrapalhando o trabalho.
Exemplo prático:
www.fullstackmaster.com.br
126
Suponha que você seja o gerente de projeto
encarregado de liderar uma equipe de desenvolvedores
para criar um aplicativo de gerenciamento de tarefas.
Você já tem uma equipe formada, mas precisa definir
como eles vão trabalhar juntos para entregar o
aplicativo no prazo.
www.fullstackmaster.com.br
127
Todos os dias, a equipe se reúne em uma reunião
diária rápida para discutir o progresso e quaisquer
obstáculos que estejam enfrentando. Isso ajuda a
garantir que a equipe esteja sempre alinhada e
trabalhando de forma eficiente.
www.fullstackmaster.com.br
128
6 CONCLUSÃO
www.fullstackmaster.com.br
129
Com o uso cada vez maior de tecnologias emergentes
como a inteligência artificial, blockchain e a Internet
das Coisas (IoT), as oportunidades de carreira no
desenvolvimento full-stack só tendem a crescer.
www.fullstackmaster.com.br
130
O futuro do desenvolvimento full-stack é brilhante e
oferece muitas oportunidades emocionantes para
aqueles que estão dispostos a se dedicar a aprender e
crescer nesta área em constante evolução.
www.fullstackmaster.com.br
131
Não perca esta oportunidade de se tornar um
desenvolvedor Full-Stack de sucesso com a Danki
Code. Junte-se a milhares de outros alunos satisfeitos
e comece a sua jornada hoje mesmo.
SIGA-NOS NO INSTAGRAM
@programador.fullstackmaster