Nivelando o site de retiros do Flywheel: o conto de um desenvolvedor

Publicados: 2019-11-14

Como você deve saber, se você acompanha o Flywheel um pouco, temos um retiro semestral para todas as empresas que chamamos carinhosamente de Fly Fest. (E se me permite: é uma explosão.)

À medida que o Flywheel cresceu, o Fly Fest tornou-se um evento cada vez maior, com um número cada vez maior de atividades, sessões e oportunidades para subir de nível profissionalmente e se conectar com nossos colegas Flywheelers de todo o mundo.

Em um certo ponto, percebemos que havia muito o que acompanhar – onde eu deveria estar? Quando começa? Como eu chego lá? Quais são minhas escolhas para sessões de breakout?

Então, para evitar que alguém se confunda, ou se perca, ou apareça em Las Vegas com o tamanho errado de sapatos (se você sabe que sabe), foi decidido que o Fly Fest precisava de um site dedicado. Foi um privilégio servir como desenvolvedor do site Fly Fest e compartilhar um pouco sobre esse projeto!

Estarei mergulhando no processo de criação do site Fly Fest, do início ao fim:

  • Os requisitos do projeto
  • Tema e plugins
  • Dando vida à marca
  • Desafios técnicos
  • ovos de Páscoa

Você pode acompanhar e ver o site aqui.


Os requisitos do projeto

Foi uma decisão fácil construir o site Fly Fest no WordPress, por vários motivos. Obviamente, o Flywheel é focado no WordPress, por isso é um forte candidato logo de cara. Mas o Fly Fest também tem várias partes interessadas internas importantes que precisam ser capazes de editar o site em tempo real (trocadilho intencional), devido a possíveis alterações de última hora nos horários, detalhes ou locais.

Além disso, o site tem alguns tipos diferentes de conteúdo que precisam ser editáveis ​​e classificáveis ​​de forma independente e flexível. O site do Fest apresenta uma programação geral, alguns tipos diferentes de eventos e uma seção de perguntas frequentes que precisam ser vinculadas de forma coesa.

Por fim, o site precisava funcionar bem em dispositivos móveis, pois era muito provável que os participantes pegassem seus telefones para verificar horários, locais e outros detalhes do evento ao longo do dia. (Por esse motivo, optamos por um layout de página única, para manter o número de cliques e carregamentos de página no mínimo absoluto.)

Dados esses requisitos, escolher um site e tema WordPress personalizados, usando tipos de postagem personalizados e campos personalizados avançados, “não era um acéfalo” (para emprestar a frase do fundador Rick Knudtson).


Tema e plugins

Uma captura de tela do WordPress de tipos de postagem personalizados mostrando: Conecte-se ao Wifi, Qual é a chamada de vendas, Os tours de Ashton me dizem mais, onde estou indo para o FlyFest e o que devo levar para o FlyFest
Tipos de postagem personalizados para o site.

Os tipos de postagem personalizados criados para o site incluíam itens de programação (que preenchem a programação do evento com horários, locais, etc.); Breakouts (para cada uma das sessões de breakout); Sociais (para todas as atividades extracurriculares); e Things to Know , que completam a seção de perguntas frequentes no site.

Embora existam plugins disponíveis para facilitar a criação de tipos de postagem personalizados (ou CPTs), para manter as coisas enxutas, optei por codificar os CPTs diretamente no tema do site – que, aliás, decidimos construir do zero, já que o site é pouco mais do que uma página inicial. Isso significava que não eram necessários muitos arquivos de modelo, então um tema filho ou mesmo um tema inicial provavelmente seria um exagero. Na verdade, a versão final do tema acabou usando apenas cinco arquivos de template básicos no total: um para o rodapé e um para o cabeçalho; um arquivo de funções, naturalmente; o arquivo de modelo de primeira página e, claro, o arquivo de índice apenas para um substituto. (Além disso, não há muito que eu goste mais do que um campo verde.)

Uma visualização de captura de tela do WordPress da programação de quarta-feira com hora, nome do item da programação, texto do link e URL do link.

Mudando para plugins: como você já sabe se já trabalhou com Advanced Custom Fields (e se não trabalhou, está perdendo!), o plugin torna a experiência de edição imensamente mais suave e fácil para os administradores do site. Cada tipo de postagem personalizada tem seu próprio conjunto único e simples de campos personalizados a serem preenchidos e instruções a serem seguidas para facilitar a atualização do site para qualquer pessoa. Além disso, uma página geral de opções de administração foi criada com o ACF (um dos meus recursos favoritos da versão Pro do plug-in).

Além dos campos personalizados avançados, os únicos plugins que optamos por usar foram o Post Types Order (para permitir que os editores de conteúdo arrastem e soltem coisas como as perguntas frequentes para reordená-las conforme necessário, em vez de classificá-las por data); e meu plug-in de compressão de imagem favorito, Compress JPEG & PNG images by TinyPNG (obrigatório quando os usuários farão upload de suas próprias imagens de quem sabe onde). É isso!


Dando vida à marca

Chega de coisas técnicas. Este ano, o tema do Fly Fest foi “Level Up”. Nossos designers estelares criaram um novo visual (trocadilho intencional) para o evento, referenciando esse tema em uma referência aos videogames retrô dos anos 80. A marca vibrante animou todos os aspectos do retiro, desde o swag até a sinalização e o design ambiental.

O site foi naturalmente projetado para capturar essa mesma sensação caprichosa, até a fonte pixelizada. Eu tenho que agradecer aos nossos designers fenomenais Bryan e Rese pelo visual e layout; Fiz o meu melhor para recriar fielmente seus lindos modelos de alta resolução. Mas o trabalho deles foi tão bom que me inspirou a ir ainda mais longe como desenvolvedor do site, para ver que outras oportunidades poderiam existir para dar ainda mais vida à visão.

Primeiro: colaboramos em maneiras de fazer a visualização inicial do site parecer a tela inicial de um jogo de arcade, e eu não poderia estar mais feliz com o resultado (veja abaixo!). Os designers me forneceram uma animação de fogos de artifício de 8 bits sobre o logotipo do Fly Fest, bem como um dos nossos mascotes do Fest (apelidado de “Fly Kid”). Eu adicionei um pouco de movimento e uma trilha colorida mais longa para Fly Kid usando quadros-chave CSS, apenas para adicionar um pouco de personagem (trocadilho ainda intencional). Assista o suficiente e Fly Kid se vira e corre de volta para o outro lado, o que parecia muito arcade para mim.

O toque final foi fazer o texto “Enter para começar” piscar, para dar a toda a tela inicial aquela doce vibração retrô, como se você tivesse acabado de chegar a um gabinete de fliperama com o punho cheio de moedas quando chegasse ao site:

Um gif animado do site FlyFest. Ele tem um fundo preto, com uma seção azul na parte superior e um "garoto" animado correndo na parte inferior com um fluxo de azul, vermelho e amarelo atrás dele.

Animação dá uma sensação de arcade à seção superior do site Fly Fest

Obviamente, para qualquer site, a navegação é importante. Isso é especialmente verdade aqui, onde os Flywheelers podem entrar no site a qualquer momento para verificar os principais detalhes do evento em andamento.

Para atingir esse objetivo e levar a inspiração ainda mais longe, decidi fazer o menu de navegação parecer e se comportar como uma tela de pausa de videogame; pressione o ícone do menu de hambúrguer na barra de navegação e você ouvirá um efeito sonoro familiar quando a tela de “pausa” (ou seja, o menu de navegação) se abrir no site:

Um gif animado do menu pausado. O "Pausado" está piscando e os demais itens estão estáticos.
A pausa—er, menu de navegação

Eu poderia falar muito mais sobre a miríade de pequenos floreios que deram vida à marca, mas quero destacar especialmente o trabalho dos designers nos cursores personalizados e nos ativos e ícones animados em todo o site; as estrelas brilham, as naves voam e as ondas... uh, onda, eu acho!

Também me orgulho do jogo “color flood” próximo ao final da página, que – curiosidade – é uma CodePen incorporada que construí no React há algum tempo, adaptada à marca do site. Sentimos que ter um jogo real no site ajudou a levar toda a experiência para o próximo nível. (Quer saber? Vamos apenas dizer que todos os trocadilhos são intencionais.)


Desafios técnicos

Estou sempre disposto a encontrar maneiras criativas de resolver problemas no código, e este site ofereceu algumas oportunidades interessantes.

Uma das minhas partes favoritas do design foram esses componentes de botão de acordeão. Eles começariam como caixas (para fornecer aos usuários uma visão geral fácil do conteúdo), mas poderiam ser tocados/clicados para revelar mais informações:

Uma captura de tela da sessão 1 com menus suspensos das diferentes sessões.
Os componentes do acordeão forneceram uma maneira fácil de obter uma visão geral das informações do evento, mas também forneceram um desafio de design interessante.

O desafio que esses elementos do acordeão apresentavam estava na espessa sombra inferior/direita. CSS não tem nenhuma maneira de gerar bordas como essa (muito menos de uma maneira que funcionaria se o acordeão estivesse recolhido ou expandido), então eu tive que ser um pouco criativo.

A solução foi perceber que o CSS permite definir vários valores de sombra de caixa . A “borda” que você está vendo são, na verdade, duas sombras; um deslocamento para a direita, um ligeiramente para a direita e para baixo. Essa declaração fica assim:

box-shadow: 14px 0 0 var(--black), 2px 12px 0 var(--black)

(A propósito, se você não estiver familiarizado com a sintaxe var(–black) : essas são variáveis ​​CSS; elas são incríveis, e você pode ler mais sobre elas aqui!)

Falando de acordeões, no entanto:

Esses elementos sanfonados são usados ​​na maioria das seções do site, o que significa que cada seção pode ser muito curta, muito alta ou em qualquer lugar entre eles, apenas com base em quantos elementos o usuário decide inspecionar enquanto navega na página.

Na maioria dos sites, isso não seria um problema, pois o plano de fundo normalmente seria apenas uma cor estática. Mas aqui, onde há tantas coisas interessantes acontecendo no fundo, eu queria ter certeza de que não importa a altura da seção, os elementos decorativos pseudo-aleatórios desmoronaram ou expandiram com ela, e você nunca viu muito ou muito pequena.

A solução para este desafio foi posicionar absolutamente cada elemento de fundo dentro de sua seção pai e, em seguida, definir suas propriedades superior e esquerda dinamicamente com a função CSS calc, usando uma combinação de viewport e unidades de porcentagem, algo assim:

svg.star:nth-of-type(4){
 left: 90%;
 top: calc(16vh + 20%);
}

A combinação calculada de unidades de viewport e unidades de porcentagem ajudou a dar uma sensação de aleatoriedade ao layout, além de explicar o tamanho da tela do usuário.


ovos de Páscoa

Observadores astutos podem ter notado a contagem de moedas no menu de pausa, e isso não é apenas decorativo. Eu me diverti muito criando referências a franquias clássicas de videogame no site, e foi uma delícia ver meus colegas de trabalho postarem sua surpresa no Slack enquanto desbloqueavam esses pequenos ovos de Páscoa.

Não vou estragar muito aqui, mas direi que existem algumas maneiras de adicionar ao seu total de moedas e que você deve ter o som ligado quando estiver procurando por segredos. Olhe bem de perto, e você encontrará muitas referências a jogos da Nintendo, Capcom e Konami... ah, e também há uma pequena homenagem de 8 bits a uma faixa favorita do Flywheel escondida no site, que eu criei usando onlinesequencer.net.

Boa caça e obrigado por ler!


Continue lendo: O fluxo de trabalho de desenvolvimento perfeito

Desenvolver sites WordPress não precisa ser difícil. Na verdade, com as ferramentas certas e alguns softwares simples, seu fluxo de trabalho de desenvolvimento pode ser absolutamente delicioso! Desde o desenvolvimento local até a ativação dos sites, compilamos nossas melhores dicas e truques para simplificar o processo e manter os sites nos próximos anos.

Faça o download abaixo!