Portfolio

Web Development Project: andergrant.com

O projeto andergrant.com foi criado em 2009 como um site para o maior clube de Olsztyn. Utilizamos as tecnologias disponíveis na época para construir uma pla...

#Websites
Web Development Project: andergrant.com

#Contexto histórico do projeto

O andergrant.com representa uma parte significativa da história do desenvolvimento web, criado em 2009 para aquele que era então o maior e mais prestigiado clube noturno de Olsztyn. O projeto ilustra a evolução das tecnologias web e serve de estudo de caso sobre como as ferramentas daquela época foram levadas ao limite para publicar sites de clube ambiciosos, muito antes dos CDN omnipresentes e das frameworks de componentes.

#A era do desenvolvimento web (2009)

#O panorama tecnológico

O ano de 2009 marcou um período de transição no desenvolvimento web:

  • Revolução jQuery: o jQuery estava a tornar-se a biblioteca JavaScript dominante, simplificando a manipulação do DOM.
  • Domínio do Flash: o Adobe Flash continuava amplamente utilizado para multimédia, vídeo e conteúdo interativo.
  • Maturidade do PHP 5: o PHP 5 tinha estabilizado e era a principal linguagem do lado do servidor.
  • Padrão MySQL: o MySQL era o padrão de facto para bases de dados web.
  • Guerra dos navegadores: o Internet Explorer 6, 7 e 8 exigia um trabalho considerável de compatibilidade.
  • Implementação de CSS2: o CSS3 estava a surgir, mas ainda não era amplamente suportado.

#Padrões web da indústria do entretenimento

Os sites de clubes noturnos em 2009 tinham de oferecer:

  • Impacto visual: designs vistosos e capazes de captar a atenção.
  • Promoção de eventos: calendários e listagens de eventos dinâmicos.
  • Galerias de fotos: apresentação do ambiente e dos eventos do clube.
  • Integração de música: leitores de áudio e funcionalidades de listas de reprodução.
  • Funcionalidades sociais: interação entre utilizadores e construção de comunidade.
  • Consideração móvel: compatibilidade móvel inicial, ainda que limitada.

#Implementação técnica (2009)

#Tecnologias de frontend

HTML 4.01 Transitional:

  • Marcação padrão da indústria na altura.
  • Layouts baseados em tabelas ainda comuns (embora tenhamos usado CSS).
  • O HTML semântico ainda não era amplamente adotado.
  • Considerações de conformidade com XHTML.

Estilização em CSS2:

  • Opções de seletores limitadas em comparação com o CSS moderno.
  • Sem funcionalidades de CSS3 como animações, transformações ou gradientes.
  • Prefixos específicos de navegadores ainda não padronizados.
  • Layouts baseados em float (o Flexbox e o Grid não existiam).
  • Importância da compatibilidade com o IE6/7.

JavaScript e jQuery:

Porque o jQuery foi um ponto de viragem em 2009:

  • Manipulação do DOM simplificada.
  • Abstração da compatibilidade entre navegadores.
  • AJAX facilitado.
  • Biblioteca de animações e efeitos.
  • Ecossistema de plugins emergente.

Aplicação no andergrant.com:

  • Menus de navegação dinâmicos com efeitos de passagem do rato.
  • Funcionalidade de carrossel de imagens e apresentação de diapositivos.
  • Validação e submissão de formulários.
  • Deslocamento suave.
  • Janelas modais e lightboxes.
  • Interatividade do calendário de eventos.

#Arquitetura de backend

PHP 5.2/5.3:

Principais funcionalidades utilizadas:

  • Programação orientada a objetos (grande melhoria no PHP 5).
  • Extensões MySQL melhoradas (mysqli).
  • Melhor tratamento de erros.
  • Capacidades de processamento de XML.
  • Gestão de sessões.
  • Tratamento do carregamento de ficheiros.

Estrutura da aplicação:

  • Organização ao estilo MVC (antes de as verdadeiras frameworks MVC serem padrão).
  • Sistema de templates que separava a lógica da apresentação.
  • Camada de abstração da base de dados.
  • Sistema de autenticação de utilizadores.
  • Capacidades de gestão de conteúdo.

MySQL 5.0/5.1:

Modelação da base de dados:

  • Tabelas de gestão de eventos.
  • Organização da galeria de fotos.
  • Registo e perfis de utilizadores.
  • Armazenamento de notícias e conteúdo.
  • Configuração e definições.

Técnicas de otimização:

  • Estratégias de indexação para desempenho.
  • Otimização de consultas para tráfego elevado.
  • Pool de ligações à base de dados.
  • Estratégias de cache (baseadas em ficheiros, com o memcached a emergir).

#Integração de multimédia

Tecnologia Adobe Flash:

Porque o Flash era essencial em 2009:

  • Reprodução de vídeo (o vídeo em HTML5 não existia).
  • Animações e transições avançadas.
  • Transmissão e controlo de áudio.
  • Experiências multimédia interativas.
  • Comportamento consistente entre navegadores.

Aplicação no andergrant.com:

  • Galeria de fotos com transições 3D.
  • Vídeos com os melhores momentos dos eventos.
  • Banners e anúncios animados.
  • Leitor de música com função de lista de reprodução.
  • Mapa interativo do clube e disposição dos lugares.

Abordagem ao desenvolvimento em Flash:

  • Programação em ActionScript 3.0.
  • Carregamento de dados externos via XML.
  • Integração com o backend em PHP.
  • Carregamento progressivo de recursos grandes.
  • Conteúdo alternativo para utilizadores sem Flash.

#Funcionalidades e recursos

#Sistema de gestão de eventos

Calendário de eventos dinâmico:

  • Vistas mensais e semanais.
  • Páginas de detalhe com fotos.
  • Perfis de DJ e de artistas.
  • Informações sobre bilhetes e reservas.
  • Suporte para eventos recorrentes.
  • Arquivo de eventos anteriores.

Ferramentas de promoção de eventos:

  • Eventos em destaque na página inicial.
  • Cronómetros de contagem decrescente para os grandes eventos.
  • Filtragem por categoria de evento.
  • Destaque para eventos especiais.
  • Subscrição por email de notificações de eventos.
  • Integração com partilha social (primeiras APIs do Facebook e do Twitter).

#Sistema de galeria de fotos

Galeria baseada em Flash:

  • Coleções de fotos categorizadas.
  • Álbuns específicos por evento.
  • Apresentação de imagens em alta resolução.
  • Função de apresentação de diapositivos.
  • Opções de descarregamento.
  • Avaliação e comentários por parte dos utilizadores.

Gestão de conteúdo:

  • Interface de carregamento para o administrador.
  • Capacidades de processamento em lote.
  • Sistema de marca de água.
  • Otimização de imagens para a web.
  • Ferramentas de organização da galeria.

#Funcionalidades de interação do utilizador

Elementos de comunidade:

  • Registo e perfis de utilizadores.
  • Sistema de comentários em fotos.
  • Funcionalidade de confirmação de presença em eventos.
  • Moderação de conteúdo gerado pelos utilizadores.
  • Subscrições de newsletter.
  • Gestão da lista de convidados.

Integração social (início da era das redes sociais):

  • Integração com o Facebook Connect.
  • Apresentação do feed do Twitter.
  • Botões de partilha.
  • Capacidade de identificar pessoas em fotos.
  • Sistema de convite de amigos.

#Desafios de desenvolvimento (2009)

#Compatibilidade com navegadores

O desafio do Internet Explorer:

Problemas de compatibilidade com o IE6/7/8:

  • Diferenças no modelo de caixa exigiam soluções improvisadas.
  • Problemas de transparência de PNG no IE6.
  • Inconsistências do motor de JavaScript.
  • Limitações dos seletores CSS.
  • Necessidade de limpar os float.

Soluções implementadas:

  • Comentários condicionais para estilos específicos do IE.
  • Polyfills de JavaScript para funcionalidades em falta.
  • Estratégias de degradação suave.
  • Abordagens de melhoria progressiva.
  • Testes extensivos entre navegadores.

#Otimização de desempenho

Considerações de largura de banda e carregamento:

  • Velocidades médias de ligação: 2-5 Mbps.
  • Os recursos em Flash exigiam otimização.
  • A compressão de imagens era essencial.
  • Carregamento diferido das galerias.
  • Implementação de estratégias de cache.

Técnicas de otimização:

  • Sprites CSS para ícones e elementos de interface.
  • Minificação de JavaScript (manual).
  • Compressão Gzip no servidor.
  • Otimização das consultas à base de dados.
  • Cache de HTML estático.

#Acessibilidade móvel (era anterior aos smartphones)

Suporte móvel limitado:

  • O iPhone 3G era relativamente recente.
  • O Android estava a emergir, mas ainda não era dominante.
  • O Flash não era suportado no iOS (uma limitação importante).
  • Ponderou-se uma versão móvel, mas manteve-se limitada.
  • O foco continuou na experiência em computador.

#Design e experiência do utilizador

#Tendências de design visual (2009)

Características estéticas:

  • Fundos escuros (padrão nos sites de clubes noturnos).
  • Cores de destaque vibrantes (néon, elétricas).
  • Efeitos brilhantes e 3D.
  • Fundos em gradiente.
  • Tipos de letra com serifas nos títulos (tendência da altura).
  • Animações de introdução em Flash (populares, mas controversas).

Elementos da interface do utilizador:

  • Elementos de design skeuomórfico.
  • Efeitos de passagem do rato nos botões.
  • Transições animadas.
  • Navegação em menu suspenso.
  • Design de janelas modais.
  • Indicadores de carregamento.

#Arquitetura de informação

Estrutura do site:

Página inicial
├── Eventos
│   ├── Próximos eventos
│   ├── Arquivo de eventos
│   └── Eventos especiais
├── Galeria
│   ├── Categorias de fotos
│   ├── Eventos recentes
│   └── Vídeos
├── Música
│   ├── DJ residentes
│   ├── Listas de reprodução
│   └── Arquivo musical
├── Sobre
│   ├── Informações do clube
│   ├── Localização
│   └── Contacto
└── Comunidade
    ├── Livro de visitas
    ├── Newsletter
    └── Ligações sociais

#Manutenção e evolução

#Suporte contínuo (2009-2012)

Tarefas regulares de manutenção:

  • Atualizações de segurança para PHP e MySQL.
  • Atualizações de conteúdo (eventos, fotos, notícias).
  • Atualizações dos componentes em Flash.
  • Monitorização da compatibilidade com navegadores.
  • Revisões de otimização de desempenho.
  • Procedimentos de cópia de segurança.

Evolução ao longo do tempo:

  • Atualizações da biblioteca jQuery.
  • Migrações de versão do PHP.
  • Otimização da base de dados.
  • Adição de funcionalidades com base nos comentários dos utilizadores.
  • Atualizações da integração com redes sociais.
  • Melhorias de SEO.

#Transição tecnológica

O fim da era do Flash:

Em 2012, o panorama tecnológico tinha mudado:

  • O vídeo em HTML5 tornou-se padrão.
  • As vulnerabilidades de segurança do Flash aumentaram.
  • O tráfego móvel cresceu significativamente.
  • As frameworks JavaScript amadureceram.
  • O CSS3 ganhou suporte generalizado.

Considerações sobre a migração:

  • Substituição gradual dos elementos em Flash.
  • Implementação de vídeo em HTML5.
  • Adoção de design responsivo.
  • Desenvolvimento com abordagem mobile-first.
  • Otimização de desempenho.

#Lições aprendidas e importância histórica

#O que funcionou bem

  1. Adoção do jQuery: simplificou significativamente o desenvolvimento.
  2. Flash para multimédia: proporcionou as experiências ricas da época.
  3. Stack PHP/MySQL: fiável e com bom desempenho.
  4. Arquitetura modular: facilitou atualizações e manutenção.
  5. Funcionalidades de comunidade: geraram envolvimento e fidelização.

#Limitações da época

  1. Compatibilidade com navegadores: exigiu testes extensivos e soluções improvisadas.
  2. Limitações móveis: incompatibilidade do Flash com o iOS.
  3. Restrições de desempenho: limites de largura de banda e de processamento.
  4. Desafios de SEO: o conteúdo em Flash não era indexável pelos motores de busca.
  5. Preocupações de segurança: vulnerabilidades do Flash e práticas de segurança do PHP da época.

#Evolução para os padrões modernos

Como o site seria construído hoje:

  • Frontend: React/Vue.js com TypeScript.
  • Estilização: Tailwind CSS ou CSS-in-JS.
  • Backend: headless CMS ou Next.js.
  • Multimédia: vídeo em HTML5, WebGL para efeitos.
  • Móvel: aplicação web progressiva (PWA).
  • Desempenho: pontuações Lighthouse elevadas.
  • Acessibilidade: conformidade com WCAG 2.1 AA.

#Comparação tecnológica histórica

#Desenvolvimento web 2009 vs. 2026

Aspeto2009 (andergrant.com)2026 (padrões modernos)
FrontendHTML 4.01, jQueryReact/Vue.js com TypeScript
EstilizaçãoCSS2, layouts baseados em floatTailwind CSS ou CSS-in-JS, Flexbox e Grid
BackendPHP 5, MySQLheadless CMS ou Next.js
MultimédiaAdobe Flashvídeo em HTML5, WebGL
Móvelsuporte limitadoaplicação web progressiva (PWA)
Navegadoressoluções improvisadas para IE6/7/8modernos, conformes aos padrões