Start-a-Party

From Laboratório MM 5

(Difference between revisions)
Jump to: navigation, search
(Base de dados desenvolvida)
(Base de dados desenvolvida)
Line 48: Line 48:
'''Visibilidade''': as festas poderão ser visíveis ao publico em geral, ou a um grupo reduzido de pessoas (lista de amigos, ou grupo registado)
'''Visibilidade''': as festas poderão ser visíveis ao publico em geral, ou a um grupo reduzido de pessoas (lista de amigos, ou grupo registado)
-
'''GuestList''':  
+
'''GuestList''': identificar as pessoas que vão a determinada festa.
Line 55: Line 55:
'''NiveisAcessos''': identificar se o utilizador se trata de utilizador "normal", premium ou admin.
'''NiveisAcessos''': identificar se o utilizador se trata de utilizador "normal", premium ou admin.
-
'''tiposAmizade''':  
+
'''tiposAmizade''': tabela que servirá de verificação se dois utilizadores são amigos, está pedido de amizade pendente, ou um foi bloqueado pelo outro.
'''listaAmigos''': identificar listas de amigos de cada utilizador.
'''listaAmigos''': identificar listas de amigos de cada utilizador.

Revision as of 05:34, 18 January 2011


Index logo big.png

UA | DeCA | NTC

2010/2011



Realizado no âmbito de:
Laboratório Multimédia V

Docentes:
Hélder Caixinha
Liciínio Mano

Alunos:
André Horta - 46236
Paulo Alves - 47661
Paulo Lopes - 45412


Contents

Introdução

No âmbito da articulação das disciplinas de Laboratório Multimédia 5, ICPM, e Gestão de Empresas, surge o desafio de criar um (projecto) que fosse ao encontro dos princípios da Web 2.0 e que incluísse todos os conteúdos abordados durante as aulas. Assim, surge a ideia da criação de uma rede social especializada na criação e divulgação de festas, designada por Star-a-Party.

Objectivo do documento

O presente documento tem como objectivo oferecer um suporte escrito ao projecto Start-a-Party. Nele estarão indicadas todas as implementações e funcionalidades, bem como as principais dificuldades e as soluções encontradas.

Visão geral do projecto

O Start-a-Party trata-se de uma plataforma Web de domínio publico, idealizada de encontro com os conceitos da Web 2.0, que consiste num local especializado para a criação e divulgação de eventos festivos de uma forma segura e simples. Ao entrar na plataforma, o utilizador terá as opções de registo e pesquisa de festas, a qual poderá ser feita sem a criação de uma nova conta de perfil. Porém, se o mesmo utilizador desejar criar e divulgar uma festa da qual seja organizador/colaborador, terá que proceder a um registo que após efectuado, lhe dará acesso a uma pagina de perfil pessoal, na qual terá a possibilidade de criar e divulgar as festas, juntar-se ou criar novos grupos, ter uma lista de amigos (...). Contudo, se desejar que as suas organizações possuam uma maior visibilidade perante a comunidade, poderá tornar-se num utilizador premium, necessitando para isso do pagamento de uma taxa, que deverá ser renovada todos os meses. Este tipo de utilizadores, para além disto, terão ainda acesso ao upload de vídeos, bem como paginas pessoais promovidas. O principal objectivo do Start-a-Party é a obtenção de lucros, tirando partido dos conceitos da Web 2.0.

Base de dados desenvolvida

Base dados.png

Apesar da grande complexidade da nossa Base de Dados, poderemos sub-dividi-la em cinco grupos, sendo eles relativos às festas (a vermelho), aos amigos/amizades (a verde), comentários (a roxo), ficheiros (a azul) e mensagens/posts (a laranja), tendo como elemento tabela central, o Utilizador. Nela estarão indicados todos os dados pessoais relativos a cada utilizador registado no site.


O grupo relativo às festas, constituído por cinco tabelas:

Festas: na qual serão registados todos os dados necessários para a criação de uma festa.

Localizacoes: tabela necessária para o registo das variadas localizações que cada festa terá, uma vez que um local poderá ter associada mais que uma festa.

TiposFestas: as festas poderão ser de vários estilos, como são exemplos festas de carnaval, ou halloween.

Visibilidade: as festas poderão ser visíveis ao publico em geral, ou a um grupo reduzido de pessoas (lista de amigos, ou grupo registado)

GuestList: identificar as pessoas que vão a determinada festa.


O grupo relativo aos amigos, constituído por cinco tabelas:

NiveisAcessos: identificar se o utilizador se trata de utilizador "normal", premium ou admin.

tiposAmizade: tabela que servirá de verificação se dois utilizadores são amigos, está pedido de amizade pendente, ou um foi bloqueado pelo outro.

listaAmigos: identificar listas de amigos de cada utilizador.

grupos: como existe a possibilidade de criação de grupos, é necessário uma tabela na qual sejam registados, e identificar os utilizadores a ele pertencentes.

Utilizadores_has_grupos: identificação dos grupos a que cada utilizador pertence.


O grupo relativo aos comentários, constituído por duas tabelas:

Comentarios: fazer o registo dos comentários efectuados, identificando seu comentador, data e local onde foi efectuado.

localComentario: os vários comentários poderão ser feitos a um perfil de utilizador, perfil de festa, foto, vídeo, etc.


O grupo relativo aos ficheiros, constituído por três tabelas:

TipoFicheiro: se o ficheiro transferido se trata de uma imagem ou vídeo.

Ficheiros: onde serão guardados todos uploas efectuados (fotos ou vídeos).

Galerias: possibilidade de criação de galerias relativas a uma festa realizada numa determinada data.


O grupo relativo às mensagens, constituído por três tabelas:

mensagensPrivadas: possibilidade de enviar PM's entre utilizadores.

Posts: possibilidade de efectuar posts

localPosts: diversos locais onde os posts poderão ser efectuados.

Implementação

Descrição das principais funcionalidades da aplicação Web

As principais funcionalidades da aplicação Start-a-Party, como o próprio nome indica, gerem à volta da criação de festas e eventos. Mas a aplicação não se limita só a isso, procurando criar uma rede social em volta das mesmas. Portanto, as principais funcionalidades são as seguintes.

Registo e Login

Uma importante funcionalidade, o registo irá permitir ao utilizador usufruir por completo a aplicação. Um utilizador não registado apenas irá conseguir procurar e visualizar as festas, mas nada demais. Será necessário registo e login para conseguir aceder às restantes funcionalidades.

Criação e Edição de Festas/Eventos

Claramente a funcionalidade mais importante da aplicação e sem a qual a aplicação não teria propósito de ser. Uma festa pode ser criada a partir logo da página inicial, dando a hipótese de se inserir um titulo para a mesma e uma descrição. A data e hora a que se vai realizar e quando se espera terminar. Para além disso pode-se definir o número máximo de convidados, tags para ajudar na busca, a área onde se vai realizar,o tema para a mesma e ainda se está visivel para todos os utilizadores ou apenas amigos. Estes dados podem depois ser editados a qualquer momento. Pelo que se algum erro for cometido pode facilmente ser corrigido.

Ao ser criada, a festa irá aparecer no separador "My Parties" da página principal, e também no separador "Upcoming Parties", juntamente com as festas de todos os outros utilizadores.

Procura de Festas

O sistema de procura serve para aumentar a exposição das festas, podendo listá-las a todas, usar um parametro de busca ou filtrando por zona e tema. Para efectuar uma pesquisa não é necessário estar-se registado. Pelo que irá servir de incentivo a promotores de festas e outros, não vendo assim limites à exposição dos eventos que estejam a organizar.

Gestão de Amizades

Visto que a maioria das festas se espera que sejam de pequenas dimensões e entre amigos. Poder definir utilizadores como amigos e limitar a visiblidade da festa apenas a eles, irá servir de incentivo para a utilização da aplicação a muitas mais pessoas. Para além de permitir pessoas que se tenham encontrado em festas ou outros sitios manter contacto umas com as outras. Assim, indo ao perfil de outro utilizador, pode-se efectuar um pedido de amizade, permitindo ver os seus posts, comentários e fotos, invés de apenas a informação básica. Essa amizade se necessária pode ser cancelada e em casos extremos, pode-se bloquear o utilizador de ver o seu perfil e enviar mensagens.

Criação de Grupos Sociais

A existência dos grupos serve para unir mais os utilizadores. Não existe uma restrição aos grupos a que se pode juntar, pelo que dessa forma, os utilizadores podem-se unir e organizar através dos seus interesses comuns, sem necessitarem de se tornar amigos. Ao se juntar a um grupo, cada membro pode criar posts que irão aparecer na pagina principal de todos os membros, colocar comentarios na pagina do grupo e fazer uploads de fotos. É possivel ainda visualizar uma lista completa dos grupos e no perfil de cada utilizador (caso sejam amigos), ver os grupos a que se juntou. Tais como os perfis, os dados do grupo podem ser editados a qualquer momento pelo fundador.

Criação de Posts

Os posts servem como forma de blog pessoal. Existem três sitios onde se podem fazer posts. No próprio perfil, nos grupos e nas festas que se tiver criado. No caso dos admins, é ainda possivel criá-los directamente na página principal, como notícias para todos os utilizadores verem. Estes posts, se necessário, podem ser editados a qualquer momento.

Sistema de Comentários e Mensagens

Um sistema de comentários foi criado para facilitar a comunicação e organização entre os utilizadores. Esses comentários podem ser inseridos em fotos, posts, perfis, festas e grupos. Cobrindo virtualmente todos os sitios a que os utilizadores têm acesso. No caso de ser necessária uma comunicação mais privada, existe a possiblidade de enviar mensagens privadas a outros utilizadores, bastando apenas para o efeito ir ao perfil deles. Para enviar uma mensagem privada não é necessário ser-se amigo. Mas no caso de ter sido banido pelo utilizador em questão, não é possivel enviar-lhe mensagens privadas.

Galerias de Imagens

Algo que se torna óbvio em qualquer rede social, é o gosto dos utilizadores para partilhar imagens. Assim, qualquer utilizador têm a opção de criar galerias no seu perfil ou nas festas que tenha criado. Após criada, pode fazer upload de até 5 imagens (com tamanho menor do que 1mb) de cada vez. Essas imagens podem depois ser visualizadas na respectiva galeria e comentadas. Também é possivel colocar imagens nos grupos a que se pertence, desde que seja membro.

Mapa de páginas

Estrutura básica de uma página da aplicação.

Server Behaviours utilizados

Recordsets/Queries utilizados

Parâmetros passados entre páginas

A possibilidade de passar parâmetros entre páginas, quer abertamente no próprio header (GET), de uma forma mais segura (POST) ou até a manutenção de parâmetros ao longo de toda a sessão(SESSION) revelou-se uma mais-valia essencial no desenvolvimento da aplicação multimédia.

O primeiro método, GET, teve um uso algo limitado, por razões de segurança. Foi usado principalmente para transmitir parâmetros de validação. No login, por exemplo, os parâmetros "action" e "result" e "error" são passados da página de validação do login de volta para a página anterior. A informação contida nesses parâmetros informa a página do erro de validação ocorrido, e a mensagem de erro correspondente é facultada ao utilizador.

Também é utilizado o parâmetro GET na criação de uma conta. Uma chave de validação aleatória é criada, atribuída ao utilizador e envia para o email do mesmo, de forma a que ele possa activar definitivamente a conta. Por último, a ligação a festas ou perfis, feita através de um ID único, também está "a cargo" do método GET. Desta forma, torna-se fácil partilhar links, dentro e fora do contexto da aplicação.

O método POST foi usado em várias situações que requiram a passagem de informação mais sensível, como o nome de utilizador ou a password. O método GET comprometeria o utilizador ao revelar estes dados no URL. Os dados de login do utilizador são passados pelo método POST. Os dados passados a certas páginas de validação de conteúdo são também mantidos secretos, de forma a dificultar tentativas de quebrar a integridade da base de dados.

Por fim, as variável de sessão guardadas com recurso ao SESSION permitem guardar informação genérica acerca do utilizador que se encontra a usar aplicação. Nomeadamente, são guardados o username do utilizador, o seu nível de acesso à aplicação e o seu ID na tabela de Utilizadores. Através dessas variáveis pode-se controlar e, se necessário, restringir, o acesso do utilizador a certas áreas e funcionalidade da aplicação. Mais, é possível mostrar apenas o conteúdo relevante ao utilizador com a sessão iniciada.

Integração (e.g. Flash, AJAX Frameworks, etc)

A integração de outras tecnologias foi bastante importante no desenvolvimento da aplicação, nomeadamente a biblioteca de Javascript jQuery. O foco esteve na criação de uma experiência de utilização mais dinâmica e, em última análise, mais eficiente. Para tal, houve o recurso em particular a dois plugins do jQuery, Qtip e jQuery UI.

O primeiro possibilitou a criação de tooltips. Estes surgem em dois momentos da aplicação: aquando do rollover sobre um dia com evento marcado no calendário, e sobre um amigo ou utilizador que enviou um pedido de amizade. No ambos os casos, a tooltip revela as informações mais importantes sobre a festa/evento, assim como um link para a página da festa/evento, caso a interacção com o mesmo necessite de ser mais aprofundada.

O jQueryUI, cujas funcionalidades são imensas, foi utilizado para criar em, quase todas as páginas, accordions. Estes permitem ao utilizador visualizar, numa dada página, apenas o contéudo que lhe interessa de momento, focalizando a sua atenção e diminuindo o volume de informação extra.

Desenvolvimentos Futuros

No futuro, pretende-se a criação de uma versão móvel da plataforma, para possibilitar a pesquisa de festas em qualquer dispositivo com acesso à net, bem como desenvolver novas opções de criação de festas, criação de mais vantagens para utilizadores premium.

Conclusões

Finalizado este trabalho, conseguimos perceber com maior exactidão o funcionamento, na prática, de uma equipa de projecto e aplicar todos os conhecimentos de programação adquiridos durante o semestre na disciplina de laboratório 5, além de nos permitir obter novos conhecimentos com a resolução aos problemas encontrados.

Referências bibliográficas

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox