Skip to content

LuisDevLipe/MobileDevelopment

Repository files navigation

Projeto 3º Período - Análise e Desenvolvimento de Sistemas

Sobre o Desenvolvimento de Aplicativos Móveis.

O desenvolvimento de aplicativos móveis é uma área em constante evolução, com novas tecnologias e abordagens surgindo regularmente. Existem três principais abordagens para o desenvolvimento de aplicativos móveis: nativo, híbrido e web (PWAs).

O desenvolvimento móvel requer um nível de conhecimento mais especializado, soluções mobile requerem uma quantidade maior de desenvolvedores, estes são especializados nos desenvolvimento de diferentes plataformas (Android e iOS). O desenvolvimento de aplicativos nativos é complexa, custosa e possui um grande "overhead" no planejamento tanto financeiro quanto do ciclo de vida do aplicativo.

Aplicativos nativos são rápidos, extremamente performáticos possuindo acesso direto aos recursos do dispositivos e leves. Em contrapartida, o aplicativo híbrido têm um ciclo de vida mais rápido, novas atualizações surgem com mais frequência e o custo de desenvolvimento é reduzido.

Entretanto, devemos levantar as limitações e as desvantagens de cada tecnologia, assim como os benefícios que cada uma pode oferecer. O desenvolvimento híbrido feito de maneira incorrreta pode levar a uma péssima experiência do usuário, aplicativos lentos, pesados e com desempenho insatisfatório.

Sobre o Projeto.

Roadmap

Entrega Preliminar.

  • Criação de wireframes.

  • Documentação do Design escolhido e tomadas de decisão.

  • Definição da API.

  • Documentação dos critérios de escolha da api.

  • Apresentar um apk instalado em dispositivo móvel utilizando o Ionic.

  • Atualização da plataforma de projetos ( fase de iniciação e planjemento ).

  • Apresentação em slideshow do conteúdo desenvolvido e dos insights obtidos.

Entrega Final.

  • Implementação de um feed que consuma dados periodicamente da api escolhida na Etapa 1.

  • Design e Layout

  • Implementação de uma tela de apresentação dos integrantes do grupo.

  • Implementação de autenticação com Firebase Auth.

  • Implementação de cadastro de usuário para autenticação com o Firebase Auth.

  • Implementação de funcionalidade livre.

APK.

Entrega Final.

Feed, Design

Para a entrega final, implementamos o consumo da api escolhida na etapa 1, seguindo o design definido no wireframe escolhido.

Escolhemos uma API que fornece dados de futebol incluindo informações sobre campeonatos, partidas e jogadores.

Seguimos um layout que é voltado para a apresentação das informações de forma clara e organizada. Mantivemos a estrutura do wireframe, que constitui-se de cards informativos e listas de itens.

Como pode ser visto abaixo, a primeira imagem representa o wireframe escolhido, seguido pelas telas implementadas no aplicativo.

Wireframe escolhido Imagem da tabela de pontos do campenato Brasileiro Série A Design da aplicação

Imagem das partidas do Campeonato Brasileiro Série A Imagem dos melhores jogadores do Campeonato Brasileiro Série A

A implementação da entrega final inclui:

Um feed que consome dados periodicamente da API onde exibimos informações atualizadas periodicamente em 3 seções diferentes do aplicativo, através das seguintes telas:

  • Tabela de pontos do campeonato. Esta tela representa a tabela de pontos do Campeonato escolhido pelo usuário na tela inicial, exibindo as posições dos times, pontos e outros detalhes relevantes.

  • Partidas do Campeonato. Esta tela exibe as partidas do Campeonato escolhido pelo usuário na tela inicial, mostrando os jogos agendados, resultados e outras informações pertinentes. Contém filtro para exibir partidas encerradas, em andamento e agendadas.

  • Melhores Jogadores do Campeonato. Esta tela apresenta os melhores jogadores do Campeonato escolhido pelo usuário na tela inicial, destacando suas estatísticas e desempenho como gols e jogos.

Funcionalidade Livre.

Implementamos o requisito de tela de funcionalidade livre através de um perfil de usuário, onde o mesmo pode visualizar e editar suas informações pessoais que ficarão salvas no Firebase Authentication.

  • Tela de perfil do usuário. Esta tela permite que o usuário visualize e edite seu perfil, incluindo informações pessoais.

Com isso concluímos 3 requisitos funcionais, feed que consome dados, design e layout, e funcionalidade livre com a tela de perfil do usuário.

Imagem do perfil do usuário

Documentação de implementação da Autenticação.

Para a implementação dos requisitos de autenticação e cadastro de usuários no firebase, utilizamos o Firebase Authentication através do AngularFire, que é a biblioteca oficial do Angular para integração com o Firebase.

Usuários são autenticados na tela de login, caso o usuário se registre será automaticamente autenticado e redirecionado a tela principal.

O usuário é proibido de acessar qualquer tela que não seja a de login, cadastro, boas-vindas e sobre, caso não esteja devidamente autenticado com o firebase.

O protocolo de proteção das páginas é feito através do Angular Router, onde as rotas estão protegidas com Angular Guards.

Internamente os guards chamam o serviço authService, que verifica através do sdk do firebase se o usuário está autenticado. Há um observable que se inscreve no método de estado de autenticação do usuário no firebase e resolve o estado do usuário retornando um booleano ou urlTree para redirecionamento.

Angular Guards são declaradas no módulo de rotas, onde cada rota que deve ser protegida possui o guard associado.

Veja abaixo a implementação do guard e do serviço de autenticação.

Módulo Guard e método do serviço de autenticação

Rotas da aplicação protegidas pelo Angular Guards com autentição do firebase

Referências:

Assim cumprimos os requisitos de autenticação e cadastro de usuários, garantindo que apenas usuários autenticados possam acessar as funcionalidades do aplicativo.

Apresentação dos integrantes do grupo.

A tela de apresentação do grupo foi implementada para atender ao requisito de apresentar os integrantes do grupo. Nela foram criados cards informativos, contendo gifs, informações e curiosidades sobre cada integrante de uma maneira leve e divertida e cumprindo o último requisito funcional da entrega final.

Tela de apresentação dos integrantes do grupo

Preliminar

Wireframe

A escolha do design é um passo importante, pois ele define como o usuário será recebido e como o mesmo poderá interagir com a aplicação. Uma boa escolha de design cativa o cliente e atrai o seu interesse para explorar as funcionalidades. O design precisa ser coerente com os serviços oferecidos pela aplicação.

O primeiro design oferece uma interface voltada para o e-commerce, e é uma boa interface, porém não adere a ideia do projeto. Escolhemos uma api informativa que fornece dados de campeonatos, partidas e jogadores de futebol. A proposta do projeto é fornecer informações sobre o futebol e não vender produtos relacionados a ele. Já o segundo design focado em card informativos, é mais coerente pois proporciona ao usário blocos de informações que podem ser explorados, revelando novas informações e funcionalidades.

Portanto, dos designs apresentados podemos dizer que o segundo apresenta uma conexão maior e mais coesa com a proposta do projeto. A escolha do mesmo foi principalmente impulsionada pela escolha da api. Visto que, a o design é voltado para a apresentação de informações e dessa forma será mais propício para utilização na aplicação já que a api escolhida fornece dados em tempo real sobre o futebol.

Wireframe escolhido

Escolha da API.

As api's são serviços externos, nas arquiteturas modernas é comum encontrar a utilização de diversas api's em um único projeto. Elas forncem uma forma de agregar informações e funcionalidades a uma aplicação sem necessariamente passar pelo processo de desenvolvimento de servidores e bancos de dados. Nosso projeto consiste em um aplicativo informativo, fornece dados de futebol, estatísticas, tabelas de campeonatos, informações sobre jogadores e mais. Com esse conceito em mente buscamos uma api que fosse capaz de nos fornecer dados estáticos e em tempo real, que houvesse suporte a paginação e que fosse composta por dados dinâmicos como imagens, vídeos e listas.

Enquanto filtramos entre diversas api's disponíveis encontramos uma API brasileira que inclusive gostaríamos de ter utilizado, mas não conseguimos permissão para acesso. Durante a pesquisa encontramos diversas api's pagas e pouquíssimas gratuitas. Das api's gratuitas a grande maioria não oferecia suporte a dados brasileiros ou não cumpriam 100% os requisitos do projeto. No final, a api escolhida foi a Football Data. É uma API de dados de futebol que fornece informações sobre ligas, times, jogadores e estatísticas de partidas. Possui endpoints para acessar listas de campeonatos, partidas encerradas e em andamento, assim como detalhes de campeonatos, times e jogadores. A API é gratuita para uso com opções pagas para acesso a dados mais específicos e séries históricas.

Ao escolhermos uma api que se encaixa na concepção do projeto o desenvolvedor ganha um aumento de produtiviade durante o ciclo de vida da aplicação e também facilidade para implementar novas funcionalidades. Além disso, o utilizador se beneficiará com uma aplicação concisa e com atualizações regulares, o que contribuirá com a experiência do usuário. A escolha correta da api também evita a aglomeração de serviços utilizados em uma única/múltiplas funcionaliade(s), o que pode trazer um aumento de complexidade no código e dificuldade de manutenção.

Requisitos funcionais da API.

  1. Informações dinâmicas que atualizam periodicamente.
  2. Suporte a mecanismos de paginação.
  3. Conteúdo dinâmico (Imagens, textos.) - tipo feed de notícias.
  4. Uso gratuito.

Integrantes

Luis Felipe Macedo, Lucas Augusto, Gabriel Mufalani, Gabriel Vargas. básico

About

This repository represents the learning on how to develop mobile applications using Ionic + Angular.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors