User:Mybookmark

From Laboratório MM 5

(Difference between revisions)
Jump to: navigation, search
(BASE DE DADOS)
(MAPA DO SITE)
 
(70 intermediate revisions not shown)
Line 1: Line 1:
[[File:Logo transparent-01.png|370px]]
[[File:Logo transparent-01.png|370px]]
<br/>
<br/>
-
[http://www.wikipedia.org DOWNLOAD DO RELATÓRIO EM PDF]<br/>
+
 
 +
[http://bit.ly/zDQZBi DOWNLOAD DO RELATÓRIO EM PDF]<br/>
==INTRODUÇÃO==
==INTRODUÇÃO==
<br/>
<br/>
Line 69: Line 70:
<br/>
<br/>
 +
----
 +
==MAPA DO SITE==
 +
<br/>
 +
::[[File:Mapa-site-01.jpg|600px|none|thumb|alt=Mapa do site|FIG 4. MAPA DO SITE]]
 +
<br/>
----
----
Line 80: Line 86:
==BASE DE DADOS==
==BASE DE DADOS==
-
----
+
<br/>
-
: A base de dados do projecto bookmark armazena os dados de vinte e uma tabelas, relacionadas entre si. Primeiramente, determinou-se as entidades primordiais, constituídas por toda a informação necessária ao desenvolvimento do projecto. Após a definição das funcionalidades inerentes a esta rede social, surgiram as tabelas que a seguir se descrevem:
+
:: A base de dados do projecto bookmark armazena os dados de vinte e uma tabelas, relacionadas entre si. Primeiramente, determinou-se as entidades primordiais, constituídas por toda a informação necessária ao desenvolvimento do projecto. Após a definição das funcionalidades inerentes a esta rede social, surgiram as tabelas que a seguir se descrevem:
 +
<br/>
 +
:: [[Image:Tabelas.jpg|172px|left|thumb|alt=BASE DE DADOS - TABELAS|FIG 5. BASE DE DADOS - TABELAS]] [[Image:BD.png|600px|none|thumb|alt=BASE DE DADOS|FIG 6. BASE DE DADOS]]
 +
<br/>
-
;DADOS_COMUM:
+
::*'''DADOS_COMUM:'''
-
Regista os dados comuns de dois tipos de utilizadores (empresa e utilizador comum), nomeadamente nome, username (conjuga o nome e o sobrenome inserido pelo usuário), email de registo, palavra passe, país, local, fotografia, data de login e data de registo. Possui, ainda, um campo ‘active’ que permite ativar ou desativar a conta.   
+
:::Regista os dados comuns de dois tipos de utilizadores (empresa e utilizador comum), nomeadamente nome, username (conjuga o nome e o sobrenome inserido pelo usuário), email de registo, palavra passe, país, local, fotografia, data de login e data de registo. Possui, ainda, um campo ‘active’ que permite ativar ou desativar a conta.   
-
 
+
<br/>
-
UTILIZADOR_COMUM:
+
::*'''UTILIZADOR_COMUM:
-
Regista os dados inseridos pelo utilizador – data de nascimento, sobrenome, tipo de sexo e interesses.
+
:::Regista os dados inseridos pelo utilizador – data de nascimento, sobrenome, tipo de sexo e interesses.
-
 
+
<br/>
-
EMPRESA:
+
::*'''EMPRESA:
-
Regista a respectiva morada, ano de fundação, descrição e website.
+
:::Regista a respectiva morada, ano de fundação, descrição e website.
-
 
+
<br/>
-
EMPRESA_SUBS:
+
::*'''EMPRESA_SUBS:
-
Regista as subscrições efectuadas a uma empresa, sendo constituída pelo campo de quem subscreve e outro campo que inscreve a empresa subscrita. O utilizador tem a possibilidade de cancelar a subscrição através do campo ‘active’.
+
:::Regista as subscrições efectuadas a uma empresa, sendo constituída pelo campo de quem subscreve e outro campo que inscreve a empresa subscrita. O utilizador tem a possibilidade de cancelar a subscrição através do campo ‘active’.
-
 
+
<br/>
-
PROMOCOES:
+
::*'''PROMOCOES:
-
Regista as promoções lançadas pelas empresas, onde serão inseridos os dados relativamente a dois tipos de descrição: primária e secundária, imagem da campanha, local de destino, custo e respectiva data de inicio e fim da promoção.
+
:::Regista as promoções lançadas pelas empresas, onde serão inseridos os dados relativamente a dois tipos de descrição: primária e secundária, imagem da campanha, local de destino, custo e respectiva data de inicio e fim da promoção.
-
 
+
<br/>
-
CONTACTOS:
+
::*'''CONTACTOS:
-
Regista os dados dos diferentes utilizadores. Encontra-se numa tabela diferenciada para que o utilizador possa escolher se esta informação é ou não visível no seu perfil: telemóvel, telefone e email. Possibilita, também, que o utilizador modifique o seu email sem que esta alteração interfira no email que utilizou no registo de conta.
+
:::Regista os dados dos diferentes utilizadores. Encontra-se numa tabela diferenciada para que o utilizador possa escolher se esta informação é ou não visível no seu perfil: telemóvel, telefone e email. Possibilita, também, que o utilizador modifique o seu email sem que esta alteração interfira no email que utilizou no registo de conta.
-
 
+
<br/>
-
CATEGORIA:
+
::*'''CATEGORIA:
-
Esta tabela diferencia os diversos tipos de utilizador possíveis nesta rede social: o utilizador comum ou a empresa.
+
:::Esta tabela diferencia os diversos tipos de utilizador possíveis nesta rede social: o utilizador comum ou a empresa.
-
 
+
<br/>
-
TIPO_SEXO:
+
::*'''TIPO_SEXO:
-
Regista o tipo de sexo do utilizador comum: masculino ou feminino.
+
:::Regista o tipo de sexo do utilizador comum: masculino ou feminino.
-
 
+
<br/>
-
COMENTARIO:
+
::*'''COMENTARIO:
-
Regista os comentários que são realizados ao projecto de cada utilizador comum. É, então, constituída por um campo que memoriza a descrição do comentário, a sua data, o autor do comentário e qual o seu destinatário.
+
:::Regista os comentários que são realizados ao projecto de cada utilizador comum. É, então, constituída por um campo que memoriza a descrição do comentário, a sua data, o autor do comentário e qual o seu destinatário.
-
 
+
<br/>
-
MENSAGEM:
+
::*'''MENSAGEM:
-
Regista as mensagens privadas que são enviadas ao perfil de cada utilizador comum. Possui um campo que memoriza destinatário e autor de cada mensagem, assim como a data em que esta foi enviada, o estado (lido ou não lido) e permite, ainda, mostrar as mensagens anteriores (histórico).
+
:::Regista as mensagens privadas que são enviadas ao perfil de cada utilizador comum. Possui um campo que memoriza destinatário e autor de cada mensagem, assim como a data em que esta foi enviada, o estado (lido ou não lido) e permite, ainda, mostrar as mensagens anteriores (histórico).
-
 
+
<br/>
-
NOTIFICACAO:
+
::*'''NOTIFICACAO:
-
Regista as notificações provenientes da actividade entre um perfil - aquele que vê - e outro perfil - aquele que está a ser visto, ou seja, regista o emissor e o receptor, a descrição, data e o estado - lido ou não lido.
+
:::Regista as notificações provenientes da actividade entre um perfil - aquele que vê - e outro perfil - aquele que está a ser visto, ou seja, regista o emissor e o receptor, a descrição, data e o estado - lido ou não lido.
-
 
+
<br/>
-
PROJECTO:
+
::*'''PROJECTO:
-
Regista o projecto que cada utilizador comum realiza, sendo este o autor. Nesta tabela é inserido o custo estimado do respectivo plano e possui um campo (‘active’) que permite o cancelamento ou a activação deste.
+
:::Regista o projecto que cada utilizador comum realiza, sendo este o autor. Nesta tabela é inserido o custo estimado do respectivo plano e possui um campo (‘active’) que permite o cancelamento ou a activação deste.
-
 
+
<br/>
-
PROJECTO_SUBS:
+
::*'''PROJECTO_SUBS:
-
Regista as subscrições efectuadas a um projecto, sendo constituída pelo campo de quem subscreve e outro campo que inscreve o projecto subscrito. O utilizador tem a possibilidade de cancelar a subscrição através do campo ‘active’.
+
:::Regista as subscrições efectuadas a um projecto, sendo constituída pelo campo de quem subscreve e outro campo que inscreve o projecto subscrito. O utilizador tem a possibilidade de cancelar a subscrição através do campo ‘active’.
-
 
+
<br/>
-
ESTADIA:
+
::*'''ESTADIA:
-
Esta tabela regista o tipo de estadia, respectiva descrição e data de chegada e saída, relativamente à concretização do projecto do utilizador.
+
:::Esta tabela regista o tipo de estadia, respectiva descrição e data de chegada e saída, relativamente à concretização do projecto do utilizador.
-
 
+
<br/>
-
DESTINO:
+
::*'''DESTINO:
-
Esta tabela regista o local de destino e a data de ida, relativamente à concretização do projecto do utilizador.
+
:::Esta tabela regista o local de destino e a data de ida, relativamente à concretização do projecto do utilizador.
-
 
+
<br/>
-
VIAGEM_IDA:
+
::*'''VIAGEM_IDA:
-
Esta tabela regista o tipo de transporte a utilizar na viagem de ida para o local planeado, descrição, e data e hora de ida.
+
:::Esta tabela regista o tipo de transporte a utilizar na viagem de ida para o local planeado, descrição, e data e hora de ida.
-
 
+
<br/>
-
VIAGEM_VOLTA:
+
::*'''VIAGEM_VOLTA:
-
Esta tabela regista o tipo de transporte a utilizar na viagem de volta, descrição, e data e hora de ida.
+
:::Esta tabela regista o tipo de transporte a utilizar na viagem de volta, descrição, e data e hora de ida.
-
 
+
<br/>
-
 
+
::*'''BUDGET:
-
BUDGET:
+
:::Permite que o utilizador comum faça a gestão das suas economias. Regista, assim, o valor actual – valor que possui para investir no projecto - e a data em que é actualizado. Permite que o utilizador escolha se esta informação é ou não visível a outros utilizadores através do campo ‘publico_privado’ -  por defeito, encontra-se privado.
-
Permite que o utilizador comum faça a gestão das suas economias. Regista, assim, o valor actual – valor que possui para investir no projecto - e a data em que é actualizado. Permite que o utilizador escolha se esta informação é ou não visível a outros utilizadores através do campo ‘publico_privado’ -  por defeito, encontra-se privado.
+
<br/>
-
 
+
::*'''MOVIMENTOS:
-
MOVIMENTOS:
+
:::Regista os movimentos realizados no budget: valor inserido e respectiva data.
-
Regista os movimentos realizados no budget: valor inserido e respectiva data.
+
<br/>
-
 
+
::*'''NOTIFICACAO_BUDGET:  
-
NOTIFICACAO_BUDGET:  
+
:::Esta tabela regista o tipo de movimentos que são efectuados na área de poupanças, a data e o valor inserido. O campo ‘estado’ permite que o utilizador apague ou não a notificação.
-
Esta tabela regista o tipo de movimentos que são efectuados na área de poupanças, a data e o valor inserido. O campo ‘estado’ permite que o utilizador apague ou não a notificação.
+
<br/>
-
 
+
::*'''POI:
-
POI:
+
:::Regista os pontos de interesse que o utilizador visitará no decorrer da sua viagem projectada: tipo de ponto de interesse (ex.: praia, museu, entre outros) e respectiva descrição.
-
Regista os pontos de interesse que o utilizador visitará no decorrer da sua viagem projectada: tipo de ponto de interesse (ex.: praia, museu, entre outros) e respectiva descrição.
+
<br/>
-
 
+
::Após a identificação das entidades e respectivos campos, procedeu-se à realização das relações existentes entre as diferentes tabelas: Relações 1:1 do tipo Identifying, relações 1:1 do tipo Non-Identifying, relações 1:M do tipo Identifying e relações 1:M do tipo Non-Identifying.
-
Após a identificação das entidades e respectivos campos, procedeu-se à realização das relações existentes entre as diferentes tabelas: Relações 1:1 do tipo Identifying, relações 1:1 do tipo Non-Identifying, relações 1:M do tipo Identifying e relações 1:M do tipo Non-Identifying.
+
<br/>
 +
----
==IMPLEMENTAÇÃO==
==IMPLEMENTAÇÃO==
Line 153: Line 163:
----
----
<br/>
<br/>
-
:: A implementação desta plataforma on-line assenta em três diferentes grupos: perfil do utilizador, rede social e área de gestão. Aquando da primeira visita do utilizador a esta rede social, é-lhe apresentado um formulário para registo de conta segundo o tipo de usuário - empresa ou utilizador comum. Após este passo, ser-lhe-á enviado um email de boas-vindas e respectivas credencias.  
+
::A implementação desta plataforma on-line assenta em três diferentes grupos: perfil do utilizador, rede social e área de gestão.
-
:: Caso o utilizador já tenha criado a sua conta, terá, apenas, que se autenticar na plataforma para que tenha acesso à sua rede social. Tem, também, a possibilidade de recuperar a sua palavra-passe, caso esta seja esquecida - terá que inserir o seu email de registo, para onde esta será enviada.
+
::*Na primeira visita do utilizador a esta rede social, é-lhe apresentado um formulário para registo de conta segundo o tipo de usuário - empresa ou utilizador comum. Após este passo, ser-lhe-á enviado um email de boas-vindas e respectivas credenciais.  
-
:: Após a realização do login, o utilizador poderá personalizar o seu perfil. Tanto o utilizador empresa como o utilizador comum podem inserir e editar os seus dados pessoais e fazer o upload de fotografia de perfil.  
+
::*Caso o utilizador já tenha criado a sua conta, terá, apenas, que se autenticar na plataforma para que tenha acesso à sua rede social. Tem, também, a possibilidade de recuperar a sua palavra-passe, caso seja esquecida - terá que inserir o seu email de registo, para onde esta será enviada.
-
:: A rede social de cada usuário comum é criada pelo próprio, ou seja, este subscreve projectos e empresas, realiza comentários e envia mensagens privadas, apenas, aos utilizadores que possuem planos de viagem do seu interesse para uma possível troca de sugestões relativas ao local que pretende visitar.  
+
::*Após a realização do login, o utilizador poderá personalizar o seu perfil. Tanto o utilizador empresa como o utilizador comum podem inserir e editar os seus dados pessoais e fazer o upload de fotografia de perfil.  
-
:: No seu perfil, poderá ver todas as subscrições realizadas ao seu projecto, tendo a possibilidade de cancelar as indesejadas e todos os comentários realizados por outros utilizadores, tendo, também, a possibilidade de apagar os indesejados.  
+
::*A rede social de cada usuário comum é criada pelo próprio, ou seja, este subscreve projectos e empresas, realiza comentários e envia mensagens privadas aos utilizadores que possuem planos de viagem do seu interesse para uma possível troca de sugestões relativas ao local que pretende visitar.  
-
:: Na sua rede social, a partir do feed de notícias, terá acesso a todos os projectos que subscreve e respectivos perfis, ordenados por data de actualização e a todas as empresas inscritas nesta rede, bem como destacar, as empresas preferidas.  
+
::*No seu perfil, poderá ver todas as subscrições realizadas ao seu projecto, tendo a possibilidade de cancelar as indesejadas e todos os comentários realizados por outros utilizadores, tendo, também, a possibilidade de apagar os indesejados.  
-
:: Sempre que haja algum tipo de interacção entre dois ou mais utilizadores, como por exemplo, envio de uma mensagem ou realização de um comentário a um dos perfis, o usuário recebe uma ou várias notificações para que acompanhe a actividade inerente ao seu perfil/projecto.
+
::*Na sua rede social, a partir do feed de notícias, terá acesso a todos os projectos que subscreve e respectivos perfis, ordenados por data de actualização e a todas as empresas inscritas nesta rede, bem como destacar, as empresas preferidas.  
-
:: Após a conclusão do seu plano ou por outros motivos alheios, o usuário poderá suspender a sua conta e mais tarde, reactiva-la.  
+
::*Após a conclusão do seu plano ou por outros motivos alheios, o usuário poderá suspender a sua conta e mais tarde, reactiva-la.  
-
:: O utilizador empresa poderá visualizar todos os perfis dos utilizadores comuns, tendo acesso directo, a partir do feed de notícias da sua rede, aos utilizadores que a marcaram como preferida.
+
::*O utilizador empresa poderá visualizar todos os perfis dos utilizadores comuns, tendo acesso directo, a partir do feed de notícias da sua rede, aos utilizadores que a marcaram como preferida.
-
::Relativamente à área de gestão, esta varia consoante cada tipo de usuário. Por um lado, as empresas têm a possibilidade de criar as suas promoções e publicá-las no seu perfil, de forma a atrair potenciais clientes. Por outro lado, os utilizadores comuns têm a possibilidade de criar o projecto e respectivo budget. A criação de um projecto permite a definição do local de destino - disponibilizando o Google Maps como ferramenta de procura de informações do mesmo -, tipo de transporte, tipo de estadia, data de realização e pontos de interesse a visitar. Para realização do seu plano, o utilizador dispõe de uma área de gestão de economias - budget -, onde pode inserir os gastos ou poupanças, onde tem acesso à sua barra de progresso que indica a percentagem de conclusão do objectivo definido (viagem).
+
::*Relativamente à área de gestão, esta varia consoante cada tipo de usuário. Por um lado, as empresas têm a possibilidade de criar as suas promoções e publicá-las no seu perfil, de forma a atrair potenciais clientes. Por outro lado, os utilizadores comuns têm a possibilidade de criar o projecto e respectivo budget.  
 +
::*A criação de um projecto permite a definição do local de destino - disponibilizando o Google Maps como ferramenta de procura de informações do mesmo -, tipo de transporte, tipo de estadia, data de realização e pontos de interesse a visitar. Para realização do seu plano, o utilizador dispõe de uma área de gestão de economias - budget -, onde pode inserir os gastos ou poupanças, tendo acesso à sua barra de progresso que indica a percentagem de conclusão do objectivo definido (viagem).
<br/>
<br/>
----
----
Line 284: Line 295:
----
----
-
==PROBLEMAS E SOLUÇÕES==
+
==DESAFIOS==
<br/>
<br/>
 +
:Ao longo de todo o desenvolvimento da aplicação a equipa deparou-se com os mais variados desafios. Os que serão, posteriormente, explicitados aqui foram alvo de especial atenção por parte do grupo. Cabe por isso a função de salientar aqui a sua função para a funcionalidade da nossa aplicação.
 +
 +
:'''EMAIL: CONFIRMAÇÃO DE REGISTO E RECUPERAÇÃO DE PASSWORD'''
 +
 +
:DESAFIO: pesquisa de um código funcional que permitisse a autenticação na rede.
 +
 +
:Existem duas funcionalidades distintas: envio de um email para confirmação de registo de conta e respectivas credenciais ou envio de um email com a palavra-passe, por pedido do utilizador para a recuperação da mesma.
 +
 +
 +
:'''HEADER: LOGIN;'''
 +
 +
:DESAFIO: A aplicação não permitia que se fizesse session_start().
 +
 +
:O session_start é o que permite ao utilizador estar identificado enquanto se encontra ligado à aplicação. Nesta existem dois “header’s”:
 +
 +
::*O primeiro é no index onde se encontra a área de login.
 +
::*O segundo header é a barra de navegação principal da aplicação e está a ser processado pela função require presente no PHP.
 +
 +
:Assim, o grupo optou por colocar o código neste segundo “header” de forma a poupar recursos, assim este código não teria que estar presente em todas as páginas. No entanto encontrou-se dificuldades em colocar este código em funcionamento.
 +
:Uma vez que o grupo está habituado à estrutura de processamento do código em javascript - que faz a leitura e processamento do código na vertical - assumiu que em PHP funcionaria da mesma forma. No entanto em PHP o código é processado com base no conteúdo - ao processar o código o PHP analisa o código embutido na página e só depois vai buscar o código presente em páginas que estejam ligadas a esta.
 +
 +
 +
:'''PÁGINA DE FEEDS: ALGORITMO DE ATUALIZAÇÃO DOS UTILIZADORES;'''
 +
 +
:DESAFIO: Ordenar o feed de actualização dos projectos dos utilizadores subscritos por ordem decrescente de alteração dos mesmos.
 +
 +
:Inicialmente, o grupo pensou em apresentar o feed de atualizações dos utilizadores comuns em conjunto com as últimas promoções das empresas. Posteriormente, decidiu-se que seria mais lógico se as duas estivessem separadas.
 +
:Para isso criou-se um novo campo na tabela PROJECTO_SUBS, com a data de atualização.
 +
:Isto permitiu reduzir o número de queries feitas à base de dados, que por sua vez contribui para uma diminuição do tráfego.
 +
 +
 +
:'''IMAGEM DE PERFIL: UPLOAD E SELECÇÃO;'''
 +
 +
:DESAFIO: Implementar uma ferramenta que permita realizar o upload de uma fotografia bem como selecionar a área que o utilizador queria que ficasse visível no perfil.
 +
 +
:O processo que ocorre já está detalhadamente explicado no ponto 5.1. deste ensaio, no entanto foi um dos grandes desafios com que o grupo se deparou e batalhou, conseguindo implementar com sucesso, daí a sua presença novamente nesta área.
 +
 +
 +
:'''GOOGLE MAPS: IMPLEMENTAÇÃO DE LIVRARIA DE LOCAIS;'''
 +
 +
:DESAFIO: Associar à API da Google uma ferramenta que permita a sugestão de locais consoante a pesquisa efetuada.
 +
 +
:O objetivo primordial desta ferramenta é evitar que o utilizador tenha que preencher dados complicados - como latitude e longitude - e reduzir a hipótese de ocorrerem erros de preenchimento.
<br/>
<br/>
----
----
 +
==DESENVOLVIMENTOS FUTUROS==
==DESENVOLVIMENTOS FUTUROS==
<br/>
<br/>
-
: Sendo o tempo de desenvolvimento deste projeto bastante limitado - comparativamente ao tempo que seria normalmente necessário para planificar e implementar uma aplicação desta dimensão - existem inúmeras ideias que foram colocadas de parte e que levou o grupo a seguir um caminho um pouco diferente do que realmente gostaria, de forma a conseguir atingir o resultado pretendido.
+
: Sendo o tempo de desenvolvimento deste projeto bastante limitado - comparativamente ao tempo que seria normalmente necessário para planificar e implementar uma aplicação desta dimensão - existem inúmeras ideias que foram colocadas de parte e que levou o grupo a seguir um caminho um pouco diferente do que realmente gostaria, de forma a conseguir atingir o resultado mais próximo do esperado.
-
: Assim, numa abordagem futura, as principais funcionalidades a implementar na nossa aplicação passariam pela implementação de uma ferramenta que permitisse ao utilizador receber o valor estimado do projeto de forma automática. Para isso o usuário teria que fornecer apenas a data - de ida e e de volta - da viagem, bem como o número de noites para a estadia e local da estadia. No entanto, esta ferramenta estaria apenas disponível para viagens de avião e comboio / metro.
+
: Assim, numa abordagem futura, as principais funcionalidades a implementar na nossa aplicação passariam pela implementação de uma ferramenta que permitisse ao utilizador receber o valor estimado do projeto de forma automática. Para isso, o usuário teria que fornecer apenas a data - de ida e e de volta - da viagem, bem como o número de noites e local da estadia. No entanto, esta ferramenta estaria apenas disponível para viagens de avião e comboio / metro.
-
: Pretende-se também cativar e facilitar o acesso de todos os tipos de potenciais utilizadores à aplicação. Para isso o grupo pretende vir a disponibilizar a possibilidade de efectuar login com a sessão do Facebook. O grupo também considerou que seria relevante para o crescimento da aplicação a implementação de partilha do projeto  do utilizador propriamente dito nas principais redes sociais.
+
: De modo a que os utilizadores acompanhem a atividade inerente ao seu perfil/projeto ou seja, sempre que ocorra algum tipo de interação entre dois ou mais utilizadores, o grupo pretende implementar um sistema de notificações.
-
: Tendo, também, em vista a expansão da aplicação, assim como a melhoria da experiência dos utilizadores - seria deveras interessante a implementação da aplicação bookmark em formato mobile. Isto permitiria aos utilizadores atualizarem o seu perfil enquanto estivessem a viajar e assim partilhar e incentivar os outros utilizadores.
+
: Pretende-se também cativar e facilitar o acesso de todos os tipos de potenciais utilizadores à aplicação. Para isso, o grupo pretende vir a disponibilizar a possibilidade de efectuar login com a sessão do Facebook. O grupo também considerou que seria relevante para o crescimento da aplicação, a implementação de partilha do projeto do utilizador nas principais redes sociais.
 +
 
 +
: Tendo, também, em vista a expansão da aplicação, assim como a melhoria da experiência dos utilizadores - seria bastante interessante a implementação da aplicação bookmark em formato mobile. Isto permitiria aos utilizadores atualizarem o seu perfil enquanto estivessem a viajar e assim partilhar e incentivar os outros utilizadores.
: Neste momento o bookmark apenas suporta fotografias na imagem de perfil dos utilizadores e empresas e nas campanhas das mesmas.  No entanto, o grupo pretende adicionar uma galeria associado ao projeto de cada utilizadores; seja este um - como acontece neste momento - ou mais que um projeto por utilizador.
: Neste momento o bookmark apenas suporta fotografias na imagem de perfil dos utilizadores e empresas e nas campanhas das mesmas.  No entanto, o grupo pretende adicionar uma galeria associado ao projeto de cada utilizadores; seja este um - como acontece neste momento - ou mais que um projeto por utilizador.
Line 305: Line 362:
==CONCLUSÕES==
==CONCLUSÕES==
<br/>
<br/>
 +
::''Quais são as necessidades do utilizador face a esta aplicação?''
 +
<br/>
 +
::Foi este o ponto de partida para este projeto que tem como missão acompanhar e guiar o utilizador, principalmente quando este está num sítio novo e desconhecido. Partilhar os melhores momentos, as maiores emoções e aventuras da vida dos utilizadores incentivando os outros a concretizarem os seus projetos.
 +
::Sendo este ensaio, para o grupo, o comutar de todos os conhecimentos adquiridos ao longo dos Laboratórios Multimedia, entregamos este projeto com a sensação de quem cumpriu o seu dever e de quem está à altura do desafio que vai ser a disciplina de projeto.
 +
::O grupo despede-se, assim, com a esperança de que este projeto ganhe vida, sendo uma ferramenta útil nas malas de todos os amantes da viagem.
 +
::Como Robert Louis Stevenson escreveu uma vez:
 +
 +
<br/>
 +
 +
::''“For my part, I travel not to go anywhere, but to go. I travel for travel’s sake. The great affair is to move.”''
 +
 +
<br/>
 +
 +
::''Boas viagens!''
<br/>
<br/>
----
----
-
==BIBLIOGRAFIA==
+
 
 +
==REFERÊNCIAS BIBLIOGRÁFICAS==
<br/>
<br/>
 +
:;BIBLIOGRAFIA:
 +
 +
:[1] Michele E. Davis , Jon A. Phillips, Learning php & mysql, 1st edition, O'Reilly, 2006
 +
<br/>
 +
 +
:;WEBGRAFIA:
 +
 +
:[1] Estatísticas de browsers@ http://www.w3schools.com/browsers/browsers_stats.asp
 +
:[2] Estatísticas de resoluções nos browsers @ http://www.w3schools.com/browsers/browsers_display.asp
 +
:[3] Manual de PHP @ http://pt.php.net/manual/en/index.php
 +
:[4] Consulta e esclarecimento de dúvidas @ http://stackoverflow.com/
 +
:[5] Notificação / pop-up @ http://css-tricks.com/examples/PopFromTopMessage/
 +
:[6] Menu de Pesquisa @ http://www.marcofolio.net/webdesign/a_fancy_apple.com-style_search_suggestion.html
 +
<br/>
 +
----
 +
==AUTORIA==
 +
<br/>
 +
;TRABALHO REALIZADO NO ÂMBITO DA CADEIRA DE LABORATÓRIO MULTIMEDIA 5, POR:
 +
 +
CARLOTA SILVA, 50244
 +
 +
FILIPE ROQUE, 49446
 +
 +
JOÃO CARDOTE - 50482
<br/>
<br/>
----
----

Latest revision as of 05:41, 20 January 2012

Logo transparent-01.png

DOWNLOAD DO RELATÓRIO EM PDF

Contents

INTRODUÇÃO


Lao Tzu disse uma vez: "A journey of a thousand miles must begin with a single step.", e este projeto não quer ser nada mais que isso; o primeiro passo para a concretização daquela viagem de sonho ou o planeamento das férias que sempre quis fazer.



OBJETIVOS DO DOCUMENTO



Este documento visa a apresentação e descrição, ao leitor, das várias fases de desenvolvimento deste projeto, bem como todas as ferramentas, técnicas e metodologias utilizadas.
Pretende-se, com este escrito, deixar documentados - de forma simples e concreta - os principais desafios encontrados, soluções viáveis e decisões tomadas.
Uma vez que o grupo considerou a possibilidade de o projeto vir a ser, posteriormente, desenvolvido é bastante relevante apresentar documentação detalhada da implementação e evolução da aplicação em causa, assegurando ao leitor a compreensão e estrutura de toda a aplicação - desde o design e base de dados ao código e respetivas frameworks.



VISÃO GERAL DO DOCUMENTO



Com este projeto pretende-se disponibilizar aos utilizadores uma aplicação intuitiva e fiável que proporcione a qualquer tipo de utilizador - seja ele avançado ou principiante - todas as ferramentas necessárias para planear com sucesso uma viagem sem percalços, uma estadia perfeita e uma visita bem estruturada a todos os pontos de interesse; de modo a que o utilizador consiga fazer a melhor gestão possível do seu tempo, guardando sempre algum para explorar livremente o espaço em que se encontra.
De forma a proporcionar aos utilizadores as melhores experiências, a um custo acessível, a aplicação também está disponível a empresas (colaboradores) que disponibilizam promoções especiais ajustadas ao projeto de cada utilizador.
O projeto visa “desenvolver um projecto que seja reconhecido pela excelência do seu desempenho, com o propósito de melhorar a qualidade de vida e satisfação de todos os amantes das viagens, que para a sua realização precisam de ajuda”.
Numa época em que o sedentarismo é uma preocupação eminente, e a crise por que se está a passar está presente em todas as capas de jornais, focadas nos demais artigos e objeto de todo o tipo de entrevistas e documentários, esta aplicação pretende surgir como catalisador, de modo a alimentar o sonho dos utilizadores e incentivá-los a não abdicar das suas férias. Com o boom das redes sociais e a interação constante entre os vários milhões de utilizadores que usam regularmente este tipo de serviços, a aplicação vai tirar partido desta mesma interação para fazer com que os utilizadores se vão inter-apoiando, de forma a todos eles conseguirem levar a cabo os seus projetos.



DESIGN

PALETA DE CORES



Para o desenvolvimento do grafismo desta aplicação foram escolhidas duas cores, cada uma delas podendo apresentar mais que uma variação.
Para cor principal foi escolhido o cinzento - este está presente na maior parte da aplicação.
Como cor secundária adotou-se o vermelho - este poderá ser encontrado no logotipo, bem como em pequenos detalhes na aplicação.


CINZENTO


Paleta de variações de cinzento
FIG 1. PALETA DE VARIAÇÕES DE CINZENTO


VERMELHO


Paleta de variações de vermelho
FIG 2. PALETA DE VARIAÇÕES DE VERMELHO



LOGOTIPO



Para a aplicação, apelidada de bookmark, pretendia-se criar um logotipo facilmente legível e de linhas simples, pois a principal plataforma onde será visualizado é o ecrã. Como tal, foram tidas em consideração as oscilações a que este poderia estar sujeito de ecrã para ecrã.
No entanto, foram também tomados outros cuidados, como ser legível em pequeno ou grande formato, a cor ou a preto e branco. Apesar de se ter optado por uma variação light da fonte dekar, verificou-se que não colocava em causa a legibilidade devido a esta ser uma fonte relativamente larga, ainda assim otimizou-se o espaçamento entre as letras para uma melhor leitura do logotipo.


LOGOTIPO
LOGOTIPO DA APLICAÇÃO
FIG 3. LOGOTIPO DA APLICAÇÃO



LAYOUT



Para a conceção da interface foram estudadas as práticas dos sítios web mais visitados que de certa forma poderiam ser semelhantes a esta aplicação . Uma vez que o grupo está limitado ao tempo e meios que dispõe, optou-se por analisar e perceber o porquê das escolhas feitas em aplicações como o Facebook, Google+, entre outras. Uma das ferramentas também utilizada para a fase inicial da construção do layout foi o w3school, onde se podem encontrar estatísticas sobre os browsers e as resoluções recomendadas.
Assim ficou decidido que a área principal da aplicação não poderia exceder, em largura, os 720px.


LAYOUT
LAYOUT A APLICAÇÃO
FIG 3. LAYOUT DA APLICAÇÃO



MAPA DO SITE


Mapa do site
FIG 4. MAPA DO SITE



USABILIDADE


As plataformas multimedia procuram adaptar-se aos diferentes tipos de utilizadores, de forma a que estes atinjam os seus objectivos com eficácia, eficiência e satisfação num contexto específico de uso. Neste sentido, procura-se que a aplicação seja de uso fácil, contribuindo para a motivação e interesse de quem a explora.
É importante que o utilizador, que não possui conhecimento relativamente a esta rede social, aquando do seu primeiro contacto, se sinta familiarizado e deve realizar, com rapidez e facilidade, aquilo que procura. Para tal, é importante avaliar, essencialmente, a criação de nova conta, a realização do login, personalização do perfil, inserção de dados necessários no perfil das poupanças e os acessos aos conteúdos da área social.
Esta rede social alinhou os seus princípios baseando-se na antecipação da necessidade de cada usuário: confere autonomia ao utilizador, permitindo que detenha o controlo sobre a aplicação; preocupação na escolha das cores, tendo em conta, todo o tipo de utilizadores possíveis; permite reversibilidade, ou seja, sempre que o utilizador insere algum tipo de informação num campo, tem a possibilidade de voltar a editá-lo mais tarde; o tempo que o utilizador dispõe para alcançar um objectivo é o mínimo possível, facilitando, assim, a interacção.



BASE DE DADOS


A base de dados do projecto bookmark armazena os dados de vinte e uma tabelas, relacionadas entre si. Primeiramente, determinou-se as entidades primordiais, constituídas por toda a informação necessária ao desenvolvimento do projecto. Após a definição das funcionalidades inerentes a esta rede social, surgiram as tabelas que a seguir se descrevem:


BASE DE DADOS - TABELAS
FIG 5. BASE DE DADOS - TABELAS
BASE DE DADOS
FIG 6. BASE DE DADOS


  • DADOS_COMUM:
Regista os dados comuns de dois tipos de utilizadores (empresa e utilizador comum), nomeadamente nome, username (conjuga o nome e o sobrenome inserido pelo usuário), email de registo, palavra passe, país, local, fotografia, data de login e data de registo. Possui, ainda, um campo ‘active’ que permite ativar ou desativar a conta.


  • UTILIZADOR_COMUM:
Regista os dados inseridos pelo utilizador – data de nascimento, sobrenome, tipo de sexo e interesses.


  • EMPRESA:
Regista a respectiva morada, ano de fundação, descrição e website.


  • EMPRESA_SUBS:
Regista as subscrições efectuadas a uma empresa, sendo constituída pelo campo de quem subscreve e outro campo que inscreve a empresa subscrita. O utilizador tem a possibilidade de cancelar a subscrição através do campo ‘active’.


  • PROMOCOES:
Regista as promoções lançadas pelas empresas, onde serão inseridos os dados relativamente a dois tipos de descrição: primária e secundária, imagem da campanha, local de destino, custo e respectiva data de inicio e fim da promoção.


  • CONTACTOS:
Regista os dados dos diferentes utilizadores. Encontra-se numa tabela diferenciada para que o utilizador possa escolher se esta informação é ou não visível no seu perfil: telemóvel, telefone e email. Possibilita, também, que o utilizador modifique o seu email sem que esta alteração interfira no email que utilizou no registo de conta.


  • CATEGORIA:
Esta tabela diferencia os diversos tipos de utilizador possíveis nesta rede social: o utilizador comum ou a empresa.


  • TIPO_SEXO:
Regista o tipo de sexo do utilizador comum: masculino ou feminino.


  • COMENTARIO:
Regista os comentários que são realizados ao projecto de cada utilizador comum. É, então, constituída por um campo que memoriza a descrição do comentário, a sua data, o autor do comentário e qual o seu destinatário.


  • MENSAGEM:
Regista as mensagens privadas que são enviadas ao perfil de cada utilizador comum. Possui um campo que memoriza destinatário e autor de cada mensagem, assim como a data em que esta foi enviada, o estado (lido ou não lido) e permite, ainda, mostrar as mensagens anteriores (histórico).


  • NOTIFICACAO:
Regista as notificações provenientes da actividade entre um perfil - aquele que vê - e outro perfil - aquele que está a ser visto, ou seja, regista o emissor e o receptor, a descrição, data e o estado - lido ou não lido.


  • PROJECTO:
Regista o projecto que cada utilizador comum realiza, sendo este o autor. Nesta tabela é inserido o custo estimado do respectivo plano e possui um campo (‘active’) que permite o cancelamento ou a activação deste.


  • PROJECTO_SUBS:
Regista as subscrições efectuadas a um projecto, sendo constituída pelo campo de quem subscreve e outro campo que inscreve o projecto subscrito. O utilizador tem a possibilidade de cancelar a subscrição através do campo ‘active’.


  • ESTADIA:
Esta tabela regista o tipo de estadia, respectiva descrição e data de chegada e saída, relativamente à concretização do projecto do utilizador.


  • DESTINO:
Esta tabela regista o local de destino e a data de ida, relativamente à concretização do projecto do utilizador.


  • VIAGEM_IDA:
Esta tabela regista o tipo de transporte a utilizar na viagem de ida para o local planeado, descrição, e data e hora de ida.


  • VIAGEM_VOLTA:
Esta tabela regista o tipo de transporte a utilizar na viagem de volta, descrição, e data e hora de ida.


  • BUDGET:
Permite que o utilizador comum faça a gestão das suas economias. Regista, assim, o valor actual – valor que possui para investir no projecto - e a data em que é actualizado. Permite que o utilizador escolha se esta informação é ou não visível a outros utilizadores através do campo ‘publico_privado’ - por defeito, encontra-se privado.


  • MOVIMENTOS:
Regista os movimentos realizados no budget: valor inserido e respectiva data.


  • NOTIFICACAO_BUDGET:
Esta tabela regista o tipo de movimentos que são efectuados na área de poupanças, a data e o valor inserido. O campo ‘estado’ permite que o utilizador apague ou não a notificação.


  • POI:
Regista os pontos de interesse que o utilizador visitará no decorrer da sua viagem projectada: tipo de ponto de interesse (ex.: praia, museu, entre outros) e respectiva descrição.


Após a identificação das entidades e respectivos campos, procedeu-se à realização das relações existentes entre as diferentes tabelas: Relações 1:1 do tipo Identifying, relações 1:1 do tipo Non-Identifying, relações 1:M do tipo Identifying e relações 1:M do tipo Non-Identifying.



IMPLEMENTAÇÃO

DESCRIÇÃO DAS PRINCIPAIS FUNCIONALIDADES DA APLICAÇÃO WEB



A implementação desta plataforma on-line assenta em três diferentes grupos: perfil do utilizador, rede social e área de gestão.
  • Na primeira visita do utilizador a esta rede social, é-lhe apresentado um formulário para registo de conta segundo o tipo de usuário - empresa ou utilizador comum. Após este passo, ser-lhe-á enviado um email de boas-vindas e respectivas credenciais.
  • Caso o utilizador já tenha criado a sua conta, terá, apenas, que se autenticar na plataforma para que tenha acesso à sua rede social. Tem, também, a possibilidade de recuperar a sua palavra-passe, caso seja esquecida - terá que inserir o seu email de registo, para onde esta será enviada.
  • Após a realização do login, o utilizador poderá personalizar o seu perfil. Tanto o utilizador empresa como o utilizador comum podem inserir e editar os seus dados pessoais e fazer o upload de fotografia de perfil.
  • A rede social de cada usuário comum é criada pelo próprio, ou seja, este subscreve projectos e empresas, realiza comentários e envia mensagens privadas aos utilizadores que possuem planos de viagem do seu interesse para uma possível troca de sugestões relativas ao local que pretende visitar.
  • No seu perfil, poderá ver todas as subscrições realizadas ao seu projecto, tendo a possibilidade de cancelar as indesejadas e todos os comentários realizados por outros utilizadores, tendo, também, a possibilidade de apagar os indesejados.
  • Na sua rede social, a partir do feed de notícias, terá acesso a todos os projectos que subscreve e respectivos perfis, ordenados por data de actualização e a todas as empresas inscritas nesta rede, bem como destacar, as empresas preferidas.
  • Após a conclusão do seu plano ou por outros motivos alheios, o usuário poderá suspender a sua conta e mais tarde, reactiva-la.
  • O utilizador empresa poderá visualizar todos os perfis dos utilizadores comuns, tendo acesso directo, a partir do feed de notícias da sua rede, aos utilizadores que a marcaram como preferida.
  • Relativamente à área de gestão, esta varia consoante cada tipo de usuário. Por um lado, as empresas têm a possibilidade de criar as suas promoções e publicá-las no seu perfil, de forma a atrair potenciais clientes. Por outro lado, os utilizadores comuns têm a possibilidade de criar o projecto e respectivo budget.
  • A criação de um projecto permite a definição do local de destino - disponibilizando o Google Maps como ferramenta de procura de informações do mesmo -, tipo de transporte, tipo de estadia, data de realização e pontos de interesse a visitar. Para realização do seu plano, o utilizador dispõe de uma área de gestão de economias - budget -, onde pode inserir os gastos ou poupanças, tendo acesso à sua barra de progresso que indica a percentagem de conclusão do objectivo definido (viagem).



SERVER BEHAVIOURS UTILIZADOS



Para a realização deste projecto, recorreu-se à utilização de vários server behaviours - comportamentos do servidor - disponibilizados pelo Dreamweaver ou escritos de raiz:


  • repeat region - possibilitam a repetição de vários elemento vindos da base de dados;


  • insert record - utilizados aquando o registo de uma nova conta, criação de um projecto e respectivo budget e inserção de informações pessoais;


  • update record - utilizados aquando a edição de dados;


  • delete record - utilizado para eliminar dados;


  • Show if Recordset is Not Empty: só executa o código caso as condições do recordset se verifiquem;


  • log in user - utilizados para certificar que a palavra-passe corresponde ao email introduzido, autorizando ou impedindo o utilizador de aceder à rede social (sistema de login);


  • log out user - permite realizar o logout do utilizador;


  • check new username - utilizado para verificar, no processo de criação de nova conta, se o email introduzido pelo utilizador já se encontra registado na base de dados do bookmark.



RECORDSETS UTILIZADOS



A partir do Dreamweaver foram criados sete tipos de recordsets:


  • rs_tipoSexo - utilizado para conhecer o sexo do utilizador (masculino ou feminino);


  • rs_empresas - utilizado para seleccionar os dados da empresa;


  • rs_feed - utilzado para demonstração de projectos e empresas subscritos;


  • rs_promo - selecciona os dados das campanhas das empresas;


  • rs_dadosUtilizador - utilizado para seleccionar os dados do utilizador comum;


  • rs_poi - selecciona os dados dos pontos de interesse, correspondestes à descrição de um projecto;


  • rs_notificacaoBudget - adiciona na área de budget as movimentações feitas pelo utiizador.


Para além disto, foram criados de raiz três recordsets:


  • dadosVisitadosRS - utilizado para obter os dados do perfil de quem é visitado;


  • projectoRS - utilizado para seleccionar as características inseridas pelo utilizador, relativamente ao seu projecto;


  • budgetRS - utilizado para seleccionar as características inseridas pelo utilizador, relativamente ao seu budget.



QUERIES UTILIZADAS



Para proceder à implementação desta rede social, recorreu-se a um elevado número de queries. Sendo, por isso, necessário destacar as mais complexas:


  • upload de uma fotografia de perfil, seguido de uma selecção da área a apresentar e, consequente recorte:
criação de variáveis de upload; criação de funções necessárias para a redimensão da imagem pretendida; verificar se o ID do utilizador que carrega a foto já possuiu uma pasta no servidor; caso não possua, é então, criada uma pasta para onde é enviada a fotografia carregada;


  • registo de uma nova conta de utilizador:
aquando o registo de um novo utilizador nesta rede social, ao inserir os seus dados para criação de conta, estes serão adicionadas em mais que uma tabela da base de dados;


  • envio de um email de confirmação de registo ou de recuperação da palavra-passe:
quando o utilizador cria uma nova conta, recebe, de imediato, um email de boas-vindas, indicando-lhe as suas credencias; no entanto, caso o utilizador se tenha esquecido da sua palavra-passe para se autenticar na rede social, tem a possibilidade de inserir o seu email de registo, para onde lhe será enviada a palavra-passe. Para que isto se tornasse possível, foi necessário criar um mecanismo que permitisse a autenticação na rede, para a aprovação do envio do email para o usuário.



PARÂMETROS PASSADOS ENTRE PÁGINAS



Os parâmetros passados entre páginas foram realizados pelo método POST.
Apenas foram enviados parâmetros como o ID e a palavra pesquisa, inserida na barra de pesquisa.

Exemplo:

    $dados__query = sprintf("
    SELECT
         db_bookmark.dados_comum.username,
         db_bookmark.dados_comum.categoria_id,
         db_bookmark.dados_comum.fotografia
    FROM
         db_bookmark.dados_comum
    WHERE
         db_bookmark.dados_comum.id_perfil = %s", $_SESSION['MM_UserGroup']);
    $USER = sprintf("
    SELECT
         nome, username, email, fotografia, id_perfil
    FROM
         dados_comum
    WHERE
         categoria_id = %d
    AND
         (nome LIKE %s OR username LIKE %s OR email LIKE %s)",$User, 
              GetSQLValueString( '%'.$_POST['palavra_pesq'].'%', 'text'),
              GetSQLValueString('%'.$_POST['palavra_pesq'].'%', 'text'),
              GetSQLValueString('%'.$_POST['palavra_pesq'].'%', 'text'));


INTEGRAÇÃO



Para a concretização desta rede social recorreu-se à integração de diferentes tecnologias, nomeadamente, PHP, HTML, CSS, jQuery e Javascript.


  • A estrutura desta plataforma social é construída a partir do HTML, cujo design e o conteúdo são editados e formatados através do CSS, recorrendo a ids e classes.


  • A linguagem PHP confere dinamismo e integração com a base de dados às páginas integrantes da rede.


  • Para validação de formulários optou-se pela linguagem Javascript, aliando o surgimento de caixas dinâmicas de aviso, através de jQuery.


  • A inserção da API Google Maps foi feita por meio de Javascript e PHP. Na página detalhada sobre o projecto do utilizador, este pode procurar informações sobre o respectivo destino.



DESAFIOS


Ao longo de todo o desenvolvimento da aplicação a equipa deparou-se com os mais variados desafios. Os que serão, posteriormente, explicitados aqui foram alvo de especial atenção por parte do grupo. Cabe por isso a função de salientar aqui a sua função para a funcionalidade da nossa aplicação.


EMAIL: CONFIRMAÇÃO DE REGISTO E RECUPERAÇÃO DE PASSWORD
DESAFIO: pesquisa de um código funcional que permitisse a autenticação na rede.
Existem duas funcionalidades distintas: envio de um email para confirmação de registo de conta e respectivas credenciais ou envio de um email com a palavra-passe, por pedido do utilizador para a recuperação da mesma.


HEADER: LOGIN;
DESAFIO: A aplicação não permitia que se fizesse session_start().
O session_start é o que permite ao utilizador estar identificado enquanto se encontra ligado à aplicação. Nesta existem dois “header’s”:
  • O primeiro é no index onde se encontra a área de login.
  • O segundo header é a barra de navegação principal da aplicação e está a ser processado pela função require presente no PHP.
Assim, o grupo optou por colocar o código neste segundo “header” de forma a poupar recursos, assim este código não teria que estar presente em todas as páginas. No entanto encontrou-se dificuldades em colocar este código em funcionamento.
Uma vez que o grupo está habituado à estrutura de processamento do código em javascript - que faz a leitura e processamento do código na vertical - assumiu que em PHP funcionaria da mesma forma. No entanto em PHP o código é processado com base no conteúdo - ao processar o código o PHP analisa o código embutido na página e só depois vai buscar o código presente em páginas que estejam ligadas a esta.


PÁGINA DE FEEDS: ALGORITMO DE ATUALIZAÇÃO DOS UTILIZADORES;
DESAFIO: Ordenar o feed de actualização dos projectos dos utilizadores subscritos por ordem decrescente de alteração dos mesmos.
Inicialmente, o grupo pensou em apresentar o feed de atualizações dos utilizadores comuns em conjunto com as últimas promoções das empresas. Posteriormente, decidiu-se que seria mais lógico se as duas estivessem separadas.
Para isso criou-se um novo campo na tabela PROJECTO_SUBS, com a data de atualização.
Isto permitiu reduzir o número de queries feitas à base de dados, que por sua vez contribui para uma diminuição do tráfego.


IMAGEM DE PERFIL: UPLOAD E SELECÇÃO;
DESAFIO: Implementar uma ferramenta que permita realizar o upload de uma fotografia bem como selecionar a área que o utilizador queria que ficasse visível no perfil.
O processo que ocorre já está detalhadamente explicado no ponto 5.1. deste ensaio, no entanto foi um dos grandes desafios com que o grupo se deparou e batalhou, conseguindo implementar com sucesso, daí a sua presença novamente nesta área.


GOOGLE MAPS: IMPLEMENTAÇÃO DE LIVRARIA DE LOCAIS;
DESAFIO: Associar à API da Google uma ferramenta que permita a sugestão de locais consoante a pesquisa efetuada.
O objetivo primordial desta ferramenta é evitar que o utilizador tenha que preencher dados complicados - como latitude e longitude - e reduzir a hipótese de ocorrerem erros de preenchimento.



DESENVOLVIMENTOS FUTUROS


Sendo o tempo de desenvolvimento deste projeto bastante limitado - comparativamente ao tempo que seria normalmente necessário para planificar e implementar uma aplicação desta dimensão - existem inúmeras ideias que foram colocadas de parte e que levou o grupo a seguir um caminho um pouco diferente do que realmente gostaria, de forma a conseguir atingir o resultado mais próximo do esperado.
Assim, numa abordagem futura, as principais funcionalidades a implementar na nossa aplicação passariam pela implementação de uma ferramenta que permitisse ao utilizador receber o valor estimado do projeto de forma automática. Para isso, o usuário teria que fornecer apenas a data - de ida e e de volta - da viagem, bem como o número de noites e local da estadia. No entanto, esta ferramenta estaria apenas disponível para viagens de avião e comboio / metro.
De modo a que os utilizadores acompanhem a atividade inerente ao seu perfil/projeto ou seja, sempre que ocorra algum tipo de interação entre dois ou mais utilizadores, o grupo pretende implementar um sistema de notificações.
Pretende-se também cativar e facilitar o acesso de todos os tipos de potenciais utilizadores à aplicação. Para isso, o grupo pretende vir a disponibilizar a possibilidade de efectuar login com a sessão do Facebook. O grupo também considerou que seria relevante para o crescimento da aplicação, a implementação de partilha do projeto do utilizador nas principais redes sociais.
Tendo, também, em vista a expansão da aplicação, assim como a melhoria da experiência dos utilizadores - seria bastante interessante a implementação da aplicação bookmark em formato mobile. Isto permitiria aos utilizadores atualizarem o seu perfil enquanto estivessem a viajar e assim partilhar e incentivar os outros utilizadores.
Neste momento o bookmark apenas suporta fotografias na imagem de perfil dos utilizadores e empresas e nas campanhas das mesmas. No entanto, o grupo pretende adicionar uma galeria associado ao projeto de cada utilizadores; seja este um - como acontece neste momento - ou mais que um projeto por utilizador.



CONCLUSÕES


Quais são as necessidades do utilizador face a esta aplicação?


Foi este o ponto de partida para este projeto que tem como missão acompanhar e guiar o utilizador, principalmente quando este está num sítio novo e desconhecido. Partilhar os melhores momentos, as maiores emoções e aventuras da vida dos utilizadores incentivando os outros a concretizarem os seus projetos.
Sendo este ensaio, para o grupo, o comutar de todos os conhecimentos adquiridos ao longo dos Laboratórios Multimedia, entregamos este projeto com a sensação de quem cumpriu o seu dever e de quem está à altura do desafio que vai ser a disciplina de projeto.
O grupo despede-se, assim, com a esperança de que este projeto ganhe vida, sendo uma ferramenta útil nas malas de todos os amantes da viagem.
Como Robert Louis Stevenson escreveu uma vez:


“For my part, I travel not to go anywhere, but to go. I travel for travel’s sake. The great affair is to move.”


Boas viagens!



REFERÊNCIAS BIBLIOGRÁFICAS


BIBLIOGRAFIA
[1] Michele E. Davis , Jon A. Phillips, Learning php & mysql, 1st edition, O'Reilly, 2006


WEBGRAFIA
[1] Estatísticas de browsers@ http://www.w3schools.com/browsers/browsers_stats.asp
[2] Estatísticas de resoluções nos browsers @ http://www.w3schools.com/browsers/browsers_display.asp
[3] Manual de PHP @ http://pt.php.net/manual/en/index.php
[4] Consulta e esclarecimento de dúvidas @ http://stackoverflow.com/
[5] Notificação / pop-up @ http://css-tricks.com/examples/PopFromTopMessage/
[6] Menu de Pesquisa @ http://www.marcofolio.net/webdesign/a_fancy_apple.com-style_search_suggestion.html



AUTORIA


TRABALHO REALIZADO NO ÂMBITO DA CADEIRA DE LABORATÓRIO MULTIMEDIA 5, POR

CARLOTA SILVA, 50244

FILIPE ROQUE, 49446

JOÃO CARDOTE - 50482


Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox