Vamos mostrar o desenvolvimento de uma app simples para Smart Tv.
Tendo a ideia de tentar passar por boa partes dos problemas que temos quando desenvolvemos app para TVs, pensei em vários tipos diferentes de exemplo de apps: galeria de fotos, app de streaming de música, app de streaming de vídeos…
O Projeto:
Com isso em mente, a escolha que mais se encaixou nesses requistos foi: app que simula um catálogo de animes/mangá.
Após essa série de posts, se vocês quiserem, eu faço um mais “real”, com request a várias APIs, player para tocar algo, entre outras coisas (Não se esqueça de comentar!!). Será um app relativamente simples, porém como o post ficará muito logo eu irei criar uma série de posts. E lembrando: esse será um projeto web hosted focado para as Smart Tvs da Samung (Tizen) e LG (WebOs).
Nesse projeto nós iremos desde a criação de uma app na sua máquina até você ver ela funcionando na sua TV 😆. Com isso ensinarei como fazer uma app e quais seriam os passos para publicar a sua app.
Ferramentas:
Basicamente nós iremos utilizar essa stack para desenvolver:
- React
- Webpack
- Jest
- HTML/CSS
- Stackoverflow
Porém, você é livre para escolher a sua, podendo utilizar qualquer framework para desenvolver. Vue.js, React, Flutter, JS Vanilla, são alguns exemplos. Você só não pode esquercer de duas premissas: compatibilidade e performance! Então vamos fazer essa bagaça funcionar!!!
Configurando o projeto:
Aqui é aquela configuração padrao: aquele nosso create-react-app
básico (se você não tem o create-react-app é só usar o npm install -g create-react-app
). Com isso, já começamos a ter a nossa estrutura inicial.
1
|
|
Nota: Para fins práticos e educacionais, eu não irei otimizar a nossa app ao máximo, me atentarei para o funcionamento básico de uma app.
Continuando, agora está na hora de adicionar o babel e o webpack, segue os comandos:
1 2 3 4 5 6 |
|
É necessário fazer algumas configurações para o funcionamento do webpack/babel após a instalação, como eu mexi em vários arquivos, aqui está o commit com essas modificações.
Com isso nós já temos a estrutura da nossa APP.
Começando o desenvolvimento:
Antes que eu me esqueça, estarei postando essa app no github, com isso se você quiser apenas o resultado final, estará tudo documentado lá.
Agora vamos começar a codar de verdade, para isso vamos fazer um request para a API que vai nos entregar os dados que a gente precisa, para isso vamos utilizar o Jikan. O Jikan é uma API não oficial do My Anime List, ela é bem completinha para o que iremos fazer 😆. E para ele existe um wrapper em js (jikanjs) para facilitar ainda mais a nossa vida, para instalar basta rodar.
1
|
|
Com isso já temos acesso a api, você pode fazer um teste colocando no App.js
o seguinte trecho de código:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Abra o seu console e você verá a resposta do servidor.
Vamos colocar esses dados na tela, e para isso vamos criar uma estrutura HTML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
e depois vamos fazer o request, para isso vamos adicionar o state
e o componentDidMount
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
E agora vamos adicionar no render
o conteúdo.
1 2 3 4 |
|
Pronto, com isso já temos todos os itens sendo exibidos na página!
Vamos passar a primeira maquiagem:
A ideia aqui é só tornar a nossa visualização melhor, não tem muita regra e ainda nem adicionei um pré-processador.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Test, Jest everywhere…
Nós não podemos esquecer de fazer os testes da nossa app (ou de qualquer código que façamos), para isso vamos instalar o jest:
1 2 |
|
na linha 2 a gente cria a configuração inicial do jest automaticamente, é só seguir a sequência jsdom, y, y
, com isso ele cria um arquivo chamado jest.config.js
. Nele faça a modificação nas linhas 82, 129, 135 e 144:
1 2 3 4 5 6 7 8 |
|
Também precisamos criar o arquivo src/setupTest.js
e dentro dele colocar:
1 2 3 |
|
Com isso só falta alterar o nosso package.json
para rodar os testes e coverage:
1 2 3 4 5 6 7 8 |
|
Também adicionei o ESLint, para ver como ficou, olhe esse commit.
Navegação
Para fazer a navegação, eu vou adicionar uma classe para indicar a seleção:
1 2 3 4 5 6 7 8 9 10 11 |
|
e agora a gente ouve os eventos do teclado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
para essa função funcionar a gente ainda precisa adicionar as seguintes linhas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
That`s it
É isso, para a nossa primeira parte isso já é o suficiente para começar a brincar ( e porque se eu continuar o post vai demorar 3 horas para ser lido 🤪)
Para ver todos os commits desse post, acesse essa tag no github
No próximo post, nós teremos a continuação dos testes, fix de alguns bugs e criação de algum evento para quando selecionar-mos um item.
Qualquer dúvida, critica ou sugestão utilizem os comentários e até a próxima!!
Este post é a parte 1 da serie “Criando sua primeira APP para Smart TVs“