SlideShare uma empresa Scribd logo
1 de 64
Baixar para ler offline
Vacinando mais de
200 mil pessoas com
ReactJS e GraphQL
Sebastian Ferrari | sebas@taller.net.br
Lucas Constantino | lucas@taller.net.br
Vacinação SESI SC
+200 mil pessoas
Projeto com o objetivo de gerenciar a compra e
aplicação de vacinas fornecidas pelo SESI SC.
Cadastro de
Empresas
Controle de
estoque
Controle de
aplicação de
doses
Controle de
pedidos
Gerenciamento de
fatura
Gerenciamento de
usuários
Domínios:
Time line
Gerenciamento
de usuários
Cadastro de
Empresas
Controle de
estoque
Controle de
aplicação de
doses
Gerenciamento
de fatura
Cadastro de
pedidos
Gerenciamento
de pedidos
Time line
Gerenciamento
de usuários
Cadastro de
Empresas
Controle de
estoque
Controle de
aplicação de
doses
Gerenciamento
de fatura
em produção
Cadastro de
pedidos
Gerenciamento
de pedidos
Por quê?
● Ecossistema inovador e grande
● Conceitos da P. Funcional
● Cases de sucesso no mercado
● Fácil de testar e de baixo custo
ReactJS
Como?
● Atua na camada de tema do
Drupal servindo estáticos (SPA)
● Divisão entre Componentes,
Containers e Pages (híbrido);
28 classes vs. 80 stateless
● Connectors são containers
sem componente
ReactJS
Por quê?
● Única fonte da verdade
● Controle unificado do estado
● Conceitos da P. Funcional
● Awesome Debugging o/
Redux
Como?
● Maior parte do uso foi através de
outras bibliotecas
● Foram exceções o uso direto,
reducers, middlewares, etc...
● Modularização através do
redux-boot
● Debugging com a extensão DevTools
Redux
Por quê?
● Módulos feitos de reducers,
middlewares e enhancers.
● Abstração da inicialização da
store assíncrona.
● Lógica interoperável
Redux Boot
Como?
● Módulos são objetos simples
● Domínio de negócio separado
em módulos
Redux Boot
Por quê?
● Normalização de propriedades
● Computação e lógica de forma
funcional e declarativa e fora do
componente.
● Facilita o uso de componentes
funcionais sem estado.
Recompose
Como?
● Composição de funções que retornam
componentes (HoCs)
● Utilizado em componentes e containers
● Utilização de: withState e withHandlers
● HoCs customizados: withProp, hideProp,
copyProp e withParamsAsProps
Recompose
Recompose
Recompose
Recompose
Por quê?
● Confiável, documentação
abrangente e comunidade ativa
● Moularizável
● Aprendizado rápido
React Router
react-router@2.x
React Router
react-router@2.x
Como?
● “Plain route objects”
● Combinado com o Webpack
chunks para agregação
inteligente de bundles.
● Utilização com Recompose
React Router
react-router@2.x
Por quê?
● CSS local como padrão e global
como exceção.
● Reutilização declarativa (composes)
● Diminui a complexidade do CSS
● Idiomático e amigável entre o time.
CSS Modules
Como?
● Webpack com o css-loader e
ExtractTextPlugin
● Classes únicas para os componentes
● Styleguide com variáveis
CSS Modules
Composição declarativa com CSS Modules
CSS Modules
problem
alert !
Onde guardar variáveis ou estilos globais ?
● Pasta local_modules com o styleguide, icones e fontes.
Configuração modulesDirectories no Webpack
Bibliotecas de CSS global como react-widgets ?
● Importação do CSS global no componente.
Dois loaders com escopamentos local e global.
CSS Modules
Redux Form
redux-form@5.x
Por quê?
● Formulários reactivos
● Lógica isolada da apresentação
● Controle de estado
Redux Form
redux-form@5.x
Como?
● Conectar à store do Redux
● Conectar ao component via reduxForm
HoC
Redux Form
redux-form@5.x
Como conectar na store
Redux Form
redux-form@5.x
Como conectar um formulário a um
componente
Webpack &
Babel
webpack@1.x
Por quê?
● ES 7-8-9
● Robustez
● Altamente adaptável
Webpack &
Babel
webpack@1.x
Como?
● Várias configs (dev, test, storybook, …)
● Chunk de vendors para melhorar o
time-to-glass
Webpack &
Babel
webpack@1.x
Configurações do webpack
├──
├──
├──
├──
└──
Webpack &
Babel
webpack@1.x
Vendors chunk com webpack.DLLReferencePlugin
Ramda
ramda
Por quê?
● Testabilidade
● Código descritivo
● Desacoplamento
Ramda
ramda
Como?
● Composição de funções
● Menos código
● Programação funcional
Ramda
Exemplo ramda 1/3
Ramda
Exemplo ramda 1/3
Ramda
Exemplo ramda 1/3
Ramda
Exemplo ramda 1/3
GraphQL
Query language para a API
● Múltiplos recursos, uma única query;
● Adoção progressiva;
● API escalável.
GraphQL
Schema language Query language Result
GraphQL Como?
Apollo Stack
Apollo Client
apollo-client
Por quê?
● Interface network customizável
● Normalização de dados
backend != client
● Redução de complexidade
● Adoção progressiva
● Cache inteligente
● Debugging
Apollo Client
apollo-client
Por quê?
● Interface network customizável
● Normalização de dados
backend != client
● Redução de complexidade
● Adoção progressiva
● Cache inteligente.
● Debugging
● Gerido pela comunidade :)
Diferente do Relay
Apollo Client
apollo-client
Como?
● Integração ao Redux
● Resolução client-side
● Apollo Client Dev Tools
● Modularização com graphql-modules
Resolução de GraphQL queries no client-site
Apollo
Apollo
React Apollo
react-apollo
Conectar o client ao React. Substitui o Provider do
Redux.
React Apollo
react-apollo
Conectar o uma GraphQL query a um componente.
Por quê?
● Configuração mínima
● Fácil adaptação
● Rápido
● Compatibilidade com React
● Facilidade para mocking
Jest
Como?
● Utilização do Enzyme
● Componentes e testes vivem juntos
● Funcionalidade de SnapShot
● Automocking e helpers para funções
Stubs ou Spies.
● Testes assíncronos ou com timeouts
Jest
problem
alert !
Alias do Webpack ?
● Jest precisa saber resolver alias de paths.
Configuração moduleNameMapper no arquivo jest.config.json
Integrar com CSS Modules ?
● Processador custom para utilizar configurações do Webpack
Stubs das classes de CSS usando a biblioteca identity-obj-proxy
Jest
… e mais !
● Superagent
● Husky git hooks!
● Eslint
● Storybook
● Conducer
● Papaparse
● Memoizee
● Nightwatch
● Enzyme
● Rewire
● Redbox
● moment
Time
Materiais
sobre
os assuntos
blog.taller.net.br
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Obrigado!
… perguntas?
Sebastian Ferrari | sebas@taller.net.br
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL

Mais conteúdo relacionado

Semelhante a Vacinando mais de 200 mil pessoas com ReactJS e GraphQL

Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 
ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)Flávio Lisboa
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsJorge Walendowsky
 
QCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFoodQCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFoodTiago Marchetti Dolphine
 
Microservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFoodMicroservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFoodDevCamp Campinas
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoRenato Groff
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 
Arquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningArquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningFelipe Santos
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azuretdc-globalcode
 
Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Flávio Lisboa
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineFrederico Maia Arantes
 
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...Amazon Web Services
 

Semelhante a Vacinando mais de 200 mil pessoas com ReactJS e GraphQL (20)

Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.js
 
Cake PHP
Cake PHPCake PHP
Cake PHP
 
QCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFoodQCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFood
 
Microservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFoodMicroservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFood
 
Devcamp 2017 Microservices Reativos
Devcamp 2017   Microservices ReativosDevcamp 2017   Microservices Reativos
Devcamp 2017 Microservices Reativos
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Arquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningArquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine Learning
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Django
DjangoDjango
Django
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...
 

Mais de Taller Negócio Digitais

Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Taller Negócio Digitais
 
De um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQLDe um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQLTaller Negócio Digitais
 
Alinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream KanbanAlinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream KanbanTaller Negócio Digitais
 
Como a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetivaComo a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetivaTaller Negócio Digitais
 
Práticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiançaPráticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiançaTaller Negócio Digitais
 
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017Taller Negócio Digitais
 
Taller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de softwareTaller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de softwareTaller Negócio Digitais
 
Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017Taller Negócio Digitais
 
Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017Taller Negócio Digitais
 
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento  - TDC Florianópolis 201711 maneiras de compartilhar conhecimento  - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017Taller Negócio Digitais
 
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016Taller Negócio Digitais
 
Programação Eficaz - Agile Trends Floripa 2016
Programação Eficaz -  Agile Trends Floripa 2016Programação Eficaz -  Agile Trends Floripa 2016
Programação Eficaz - Agile Trends Floripa 2016Taller Negócio Digitais
 
Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?Taller Negócio Digitais
 

Mais de Taller Negócio Digitais (20)

Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
 
Discovery kanban
Discovery kanbanDiscovery kanban
Discovery kanban
 
Taller Negócios Digitais
Taller Negócios DigitaisTaller Negócios Digitais
Taller Negócios Digitais
 
De um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQLDe um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQL
 
Next.js with drupal, the good parts
Next.js with drupal, the good partsNext.js with drupal, the good parts
Next.js with drupal, the good parts
 
Gestão Ágil com Fluxo Unificado
Gestão Ágil com Fluxo UnificadoGestão Ágil com Fluxo Unificado
Gestão Ágil com Fluxo Unificado
 
Alinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream KanbanAlinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream Kanban
 
Lições Aprendidas com Fluxo Unificado
Lições Aprendidas com Fluxo UnificadoLições Aprendidas com Fluxo Unificado
Lições Aprendidas com Fluxo Unificado
 
Como a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetivaComo a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetiva
 
Métricas no Fluxo Unificado
Métricas no Fluxo UnificadoMétricas no Fluxo Unificado
Métricas no Fluxo Unificado
 
Práticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiançaPráticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiança
 
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
 
Taller – Treinamentos e consultorias
Taller – Treinamentos e consultoriasTaller – Treinamentos e consultorias
Taller – Treinamentos e consultorias
 
Taller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de softwareTaller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de software
 
Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017
 
Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017
 
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento  - TDC Florianópolis 201711 maneiras de compartilhar conhecimento  - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017
 
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
 
Programação Eficaz - Agile Trends Floripa 2016
Programação Eficaz -  Agile Trends Floripa 2016Programação Eficaz -  Agile Trends Floripa 2016
Programação Eficaz - Agile Trends Floripa 2016
 
Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?
 

Vacinando mais de 200 mil pessoas com ReactJS e GraphQL