Mee: Web App para Organização do Conhecimento
T.L;D.R.: Mee é uma plataforma de organização de conhecimento. Ele permite que seus usuários coloquem informações em Cards ordenados dentro de Boards, forçando a curadoria do conteúdo. Os tipos de entrada de dados aceitos são texto markdown, links da web, imagens e vídeos. Meu papel neste projeto é gerenciar o produto e arquitetar seu sistema. Eu identifico regras de negócios, redijo especificações e às exponho em reuniões ]SCRUM. Isso garante que a equipe de desenvolvimento de Mee possa implementar recursos e corrigir bugs, sabendo como suas atividades diárias se relacionam com o quadro geral da empresa.
Arquitetura em um vislumbre: o sistema de Mee consiste em um front-end em react, back-end serverless, banco de dados DynamoDB e integrações com sistemas de pagamento de terceiros, SSO entre outras.
Como começou
Por volta de julho de 2018, fui abordado por um amigo que fiz durante meus dias de trabalho com letterpress na OTSP: o fundador doMee, Rafael Nepô. Ele me apresentou um projeto sobre uma plataforma de organização do conhecimento e suas ideias me surpreenderam 🤯. Em menos de um mês tínhamos um contrato e eu estava na equipe dele.
Isso foi e continua sendo uma grande oportunidade, porque tanto eu quanto o Nepô somos seres humanos focados no crescimento de longo prazo e isto importa quando se trata de conhecimento. Mas, como o longo prazo começa agora e tínhamos uma página em branco, tive que desde o início ajudar a definir desde negócios e identidade visual até a UX do produto e infraestrutura. Um processo que continua a acontecer, com a ajuda de pessoas maravilhosamente qualificadas.
Olhando para trás, a decisão mais importante que tomamos foi começar a documentar nossas especificações de negócios de forma colaborativa. Dei o pontapé inicial no primeiro rascunho e isso forçou toda a equipe a se unir e resolver problema por problema. A cada nova questão levantada, conseguimos escrever os detalhes necessários para planejar a UX e o desenvolvimento do produto. Isso nos deu um caminho a ser seguido e, mesmo quando nos atrasamos, o esforço que colocamos antecipadamente na escrita de especificações nos ajudou a manter-se juntos e continuar focados em ir para a frente.
Identificando o escopo
Desde a primeira vez que nós sentamos para discutir o projeto, havia ideias para mais de dez anos de desenvolvimento. É por isso que decidimos começar com um aplicativo de organização de conhecimento na escala do indivíduo.
E isso levantou uma infinidade de perguntas, desde quais operações são o conjunto mínimo para os usuários fazerem negócios até qual deve ser a estrutura de dados para guardar seu conteúdo e como renderizá-lo. O que se seguiu foram semanas escrevendo especificações até que as entidades de negócios fossem mapeadas e uma solução pudesse ser visualizada. Sabíamos que nosso principal ativo era nossa metodologia de curadoria.
Curadoria. Visualizada
Carrosséis de Cards, um em cima do outro, formando um Board mo qual as trilhas podem se mover de maneira independente. Uma solução que é simples. No entanto, alcançá-la não foi mamão com açúcar. Enfretamos desde problemas de desempenho específicos de dispositivos até navegação programática ao colar links na barra de endereço. Muitos problemas tiveram que ser resolvidos.
Mas eu diria que um dos que mais exigiram engenharia é o serviço de navegação: ele ouve cliques, teclas e toques usando Event Listeners e react-use-gesture. E quando uma dessas entradas é detectada, este serviço usa um algoritmo personalizado para informar o Card à ser ativado. Então esta informação é passada para o react-spring como DOM Ref para ele renderizar uma animação suave entre o Card atual e o ativado. Ao mesmo tempo, o id do Card é fornecido à outro serviço que buscará seu conteúdo do servidor, junto com o conteúdo de seus vizinhos. Tudo isto graças às maravilhas da renderização assíncrona.
Estado atual do projeto
A partir de Agosto de 2022 buscamos um investidor alinhado com nossa visão, para que possamos continuar avançando nosso produto e lançá-lo para um público mais amplo.