Table Of ContentUNIVERSIDADEFEDERALDORIOGRANDEDOSUL
INSTITUTODEINFORMÁTICA
CURSODECIÊNCIADACOMPUTAÇÃO
RAPHAELDELEONFERREIRALUPCHINSKI
Desenvolvimento de uma Aplicação de
Página-Única e Banco de Dados
Não-Relacional para Organização e
Controle de Eventos Esportivos
Monografia apresentada como requisito parcial
para a obtenção do grau de Bacharel em Ciência
daComputação
Orientador:Prof.Dr.LeandroKrugWives
PortoAlegre
2015
UNIVERSIDADEFEDERALDORIOGRANDEDOSUL
Reitor: Prof.CarlosAlexandreNetto
Vice-Reitor: Prof.RuiVicenteOppermann
Pró-ReitordeGraduação: Prof.SérgioRobertoKielingFranco
DiretordoInstitutodeInformática: Prof.LuisdaCunhaLamb
CoordenadordoCursodeCiênciadeComputação: Prof.CarlosArthurLangLisbôa
Bibliotecária-chefedoInstitutodeInformática: BeatrizReginaBastosHaro
AGRADECIMENTOS
Osmaisprofundosagradecimentoàfamíliaacolhedora,carinhosaeincentivadora
que tenho e que muito me auxiliou para a conclusão deste trabalho. À minha namorada,
que cuidou de mim em nossa nova casa e me deu total apoio durante este projeto. À mi-
nhaqueridadindaMariaLúcia(InMemoriam),queinfelizmentenãoestaráconoscopara
presenciaraconclusãodestaimportanteetapa. Aosdemaisamigosefamiliarespelocari-
nhodurantetodosessesanos. AoscolegasdaADP,pelasideiaseapoioparaconcluireste
trabalhoefinalmenteaoProf. LeandroWivespelareceptividade,incentivo,teracreditado
nestaideiaeportermeguiadoduranteestesmeses.
RESUMO
O esporte é uma peça fundamental na sociedade pelo seu caráter transformador e inclu-
sivo na vida das pessoas. A prática esportiva promove ganhos físicos e mentais notáveis,
melhorando a saúde e aumentando as capacidades motoras. É comum encontrar uma
abundância de aplicações que visam auxiliar a prática de esportes, em especial gerenci-
ando grupos de pessoas com interesses esportivos similares. Este trabalho descreve os
passos tomados para a implementação de uma aplicação que cobre funcionalidades de
gerenciamentodegruposeeventosesportivos,alémdeapresentarumapesquisarealizada
com diversos participantes acerca das qualidades do produto final. Trata-se de uma apli-
cação de página única (SPA) desenvolvida em AngularJS, utilizando um banco de dados
não-relacionalesistemadeautenticaçãofornecidospeloFirebase.
Palavras-chave: Angularjs. SPA.firebase. NoSQL.bootstrap. eventosesportivos.
DevelopingaSingle-PageApplicationwithNoSQLDatabaseforSportsEvents
Management
ABSTRACT
Sportsareanessentialcomponentinoursocietyjudgingbyitsshifterandinclusivechar-
acterinpeoples’lives. Practicingsportsgrantsnotablephysicalandmentalgains,increas-
ing our health and motor skills. It’s usual to find an abundance of applications that aims
to support sports practice, particularly managing groups of people with similar sports in-
terests. This work describes the steps taken to implement such application that covers
these groups and events management features and also shows the results of a survey an-
sweredbyseveralparticipantsonfinalproduct’squalities. ThisapplicationfollowsaSPA
model,developedinAngularJSusinganon-relationaldatabaseandauthenticationsystem
providedbyFirebase.
Keywords: angularjs,SPA,firebase,NoSQL,bootstrap,sportsevents.
LISTADEFIGURAS
Figura2.1 BuscasporframeworksFront-EndJSnoGoogle..........................................16
Figura2.2 ExemplodeumaaplicaçãoutilizandoosestilospurosdoBootstrap............17
Figura2.3 PáginadeumeventonoFacebook................................................................19
Figura2.4 PáginadeumaatividadenoJoga+1..............................................................20
Figura2.5 PáginadeumagruponoPeladeiro.com........................................................21
Figura3.1 DiagramaEntidade-RelacionamentodoGameFinder..................................30
Figura3.2 ConfiguraçãodosistemadeautenticaçãodeumaaplicaçãonoFirebase......36
Figura3.3 Configuraçãodasversõesdaaplicação..........................................................36
Figura3.4 Configuraçãodeumlistener emumdocumentonoFirebase.......................38
Figura4.1 Arquivodeconfiguraçãodedependênciadoprojeto-package.json....40
Figura4.2 DefiniçãodomódulocentraldoGameFinder...............................................40
Figura4.3 FactoryAuthparaacessoaoservidordeautenticaçãodoFirebase...............41
Figura4.4 DiagramaderotasdoGameFinder...............................................................43
Figura4.5 ConfiguraçãoderotasdoGameFinder.........................................................44
Figura4.6 ApontamentoàAPIdoFirebase....................................................................45
Figura4.7 BuscadeumusuárionobancodedadospeloseuID....................................45
Figura4.8 Buscadeumgruponobancodedadospelonome........................................45
Figura4.9 Estruturaçãodosobjetosdeusuários.............................................................47
Figura4.10 Estruturaçãodosobjetosdeesportes...........................................................47
Figura4.11 Estruturaçãodosobjetosdegrupos.............................................................48
Figura4.12 Estruturaçãodosobjetosdeeventos............................................................49
Figura4.13 Estruturaçãodosobjetosdeparticipantesdeumevento.............................49
Figura4.14 EstruturadepastasdaentidadePerfil..........................................................50
Figura5.1 FluxogramadeacessoaumeventodentrodoGameFinder.........................53
Figura5.2 CapadoGameFinder....................................................................................54
Figura5.3 TeladelogindoGameFinder.......................................................................55
Figura5.4 TeladeregistrodoGameFinder...................................................................55
Figura5.5 PaineldoGameFinder-Telainicial.............................................................56
Figura5.6 Páginadeperfildeumusuário......................................................................57
Figura5.7 Páginainicialdeumgrupo............................................................................58
Figura5.8 Páginadeumevento......................................................................................58
Figura6.1 Idadedospesquisados...................................................................................60
Figura6.2 Níveldeconhecimentoeminformáticadospesquisados..............................60
Figura6.3 Níveldeconhecimentododomíniodospesquisados....................................60
Figura6.4 Esportesfavoritosdospesquisados................................................................61
Figura6.5 Frequênciadapráticaesportivadospesquisados..........................................61
Figura6.6 Pesquisadosqueorganizameventosparaseusgrupos..................................62
Figura6.7 FuncionalidadesdesejadasparaofuturodoGameFinder............................64
LISTADETABELAS
Tabela2.1 Comparativodefuncionalidadesdasaplicaçõessemelhantes.......................24
Tabela7.1 Comparativodefuncionalidadesdasaplicaçõesrelacionadasemrelação
aoGameFinder.........................................................................................................65
LISTADEABREVIATURASESIGLAS
API ApplicationProgrammingInterface
BAAS Back-endAsAService
CSS CascadingStyleSheets
DOM DocumentObjectModel
HTML HyperTextMarkupLanguage
JS JavaScript
JSON JavaScriptObjectNotation
MVC Model-View-Controller
MVVM Model-View-ViewModel
MVW Model-View-Whatever
NoSQL NotOnlyStructuredQueryLanguage
RDBMS RelationalDatabaseManagementSystem
VCS VersionControlSystems
WYSIWYM WhatYouSeeIsWhatYouMean
XHR XMLHTTPRequest
XML eXtensibleMarkupLanguage
SUMÁRIO
1INTRODUÇÃO...........................................................................................................11
1.1 Objetivo....................................................................................................................11
1.2 Estruturadotexto...................................................................................................12
2FUNDAMENTOS,APLICAÇÕESETRABALHOSRELACIONADOS............13
2.1 FundamentoseTecnologias....................................................................................13
2.1.1 Front-End/Back-End............................................................................................13
2.1.2 HTML,CSSeDOM..............................................................................................14
2.1.3 JavaScript...............................................................................................................14
2.1.4 AngularJS...............................................................................................................15
2.1.5 Firebase..................................................................................................................16
2.1.6 Bootstrap................................................................................................................17
2.1.7 Controledeversionamento....................................................................................17
2.2 AplicaçõeseTrabalhosRelacionados....................................................................18
2.2.1 Facebook................................................................................................................18
2.2.2 Joga+1...................................................................................................................19
2.2.3 Peladeiro.com.........................................................................................................20
2.2.4 Aplicaçõesemdispositivosmóveis.......................................................................22
2.2.5 Outrasaplicações...................................................................................................22
2.3 ComparativodeFuncionalidades..........................................................................23
3PROJETODAAPLICAÇÃO....................................................................................25
3.1 UserStories..............................................................................................................25
3.1.1 Usuário...................................................................................................................25
3.1.2 Grupo.....................................................................................................................26
3.1.3 Evento....................................................................................................................26
3.1.4 Dashboard..............................................................................................................27
3.1.5 Busca......................................................................................................................28
3.2 Entidades.................................................................................................................28
3.2.1 Autenticação..........................................................................................................29
3.2.2 Usuário...................................................................................................................29
3.2.3 Esporte...................................................................................................................31
3.2.4 Grupo.....................................................................................................................31
3.2.5 Evento....................................................................................................................32
3.3 FrameworkseTecnologias.....................................................................................33
3.3.1 AngularJS...............................................................................................................33
3.3.1.1 ArquiteturaemCamadas.....................................................................................33
3.3.1.2 OrganizaçãodeArquivos....................................................................................34
3.3.1.3 LigaçãodeDados................................................................................................34
3.3.2 Firebase..................................................................................................................35
3.3.2.1 Autenticação.......................................................................................................35
3.3.2.2 Hospedagem........................................................................................................35
3.4 BancodeDados.......................................................................................................37
4DESENVOLVIMENTODAAPLICAÇÃO..............................................................39
4.1 ConfiguraçãoeCriaçãodoProjeto.......................................................................39
4.2 Autenticação............................................................................................................41
4.3 Rotas.........................................................................................................................41
4.3.1 DiagramadeRotas.................................................................................................42
4.3.2 AngularJSUI-Router.............................................................................................42
4.3.3 ConstruçãodeRotas..............................................................................................43
4.4 Queries.....................................................................................................................45
4.5 OrganizaçãodosDados..........................................................................................46
4.6 Componentes...........................................................................................................46
4.7 SistemadeBusca.....................................................................................................50
5GUIADEUSO............................................................................................................52
5.1 Navegação................................................................................................................52
5.2 Componentes...........................................................................................................54
5.2.1 Capa,LogineRegistro..........................................................................................54
5.2.2 Painel......................................................................................................................56
5.2.3 Perfil.......................................................................................................................56
5.2.4 Grupos....................................................................................................................57
5.2.5 Eventos...................................................................................................................57
6AVALIAÇÃOEPESQUISA.......................................................................................59
6.1 IdentificaçãodePerfil.............................................................................................59
6.2 Funcionalidades......................................................................................................61
6.3 UsodaAplicação.....................................................................................................62
7CONCLUSÃOETRABALHOSFUTUROS...........................................................65
7.1 AspectosTécnicos....................................................................................................66
7.2 TrabalhosFuturos...................................................................................................66
REFERÊNCIAS.............................................................................................................68
Description:cação de página única (SPA) desenvolvida em AngularJS, utilizando um banco de dados não-relacional e to support sports practice, particularly managing groups of people with similar sports in- terests. This work by Firebase. Keywords: angularjs, SPA, firebase, NoSQL, bootstrap, sports events.