Filedrop

Felipe Cavani - 2017-08-18 19:32:00 -0300

Filedrop - https://fcavani.com/filedrop - é um serviço na web para compartilhamento rápido de arquivos. O serviço tem funcionamento bem simples e intuitivo. Basta arrastar um arquivo ou selecioná-lo pela caixa de diálogo, então o arquivo será enviado para a nuvem e lá permanecerá durante 2 dias. Durante este período a pessoa que enviou o arquivo poderá compartilhar um link curto, que foi gerado após o upload, com quem ela quiser que receba este arquivo. Funcionamento muito parecido com os dos encurtadores de url, como o Bitly, que é usando pelo Filedrop.

Motivação

A motivação por trás disso tudo está no fato do meu site ter sido criticado por não ser dinâmico, seja lá qual for o significado desta palavra quando aplicada a sites. O site tem todo o sistema de gerenciamento, que fica escondido do usuário, o que o torna dinâmico. Como o caso do blog, em que eu envio um texto para o Github e ele aparece no site automaticamente. Entre outras coisas.

Resolvi fazer o Filedrop para preencher essa suposta lacuna e colocar de forma evidente que eu consigo fazer algo mais interativo que o formulário de contato.

Além disso optei pelo AngularJS para fazer o frontend (camada que os usuários veem). Estudei o assunto durante um bom tempo. Demorei pois encarei-o como um projeto secundário e levei bastante tempo para fazer isso. Quando terminei de estudar o livro parti para a implementação, esta que se deu em algumas semanas apenas. Vale observar que o backend (porção do site que você não vê), já estava pronta a muito tempo, feito em Go.

Arquitetura

Este site foi desenvolvido usando a arquitetura de microserviços, onde os vários módulos são executados em processos diferentes, possibilitando segurança e estabilidade, além de uma maior facilidade de manutenção.

O Filedrop foi integrado ao serviço de http, onde está localizado o roteador e parte do código dos módulos. Tive que tomar esta decisão pois de outra forma a velocidade de transferência dos arquivos ficaria além do ideal. Desta forma conseguimos um melhor desempenho e logo um serviço melhor para o usuário. Mesmo assim ele continua sendo um módulo separado em seu contexto de tal modo a não interferir com o funcionamento do resto, na maioria dos casos. Mais sobre o site acesse: o blog.

Como foi dito o backend do site foi todo desenvolvido em Go inclusive o módulo do Filedrop. Com isso podemos contar com todas as vantagens desta linguagem que foi feita para ser usada nesse tipo de aplicação, ou seja, que trabalha do lado do servidor.

O frontend foi desenvolvido em HTML, CSS e Javascript. O framework adotado foi o AngularJS, que mostrou uma incrível facilidade e poder para implementar a interface com o usuário. Nota-se também uma boa parte do código em Javascript foi usada para gerenciar a internacionalização (i18n) dele, que suporta o idioma inglês e português de modo dinâmico.

Rest

O Filedrop é dotado de uma API Rest que proporciona o armazenamento, recuperação e consulta a respeito do arquivo armazenado.

Retrieve

Onde uuid é o código que identifica de forma única o arquivo enviado. A resposta se for solicitada pode ser feita em multipart mime o que possibilita a continuação do download ou o download múltiplo e simultâneo de diferentes porções do arquivo.

Store

Envia um arquivo para o servidor e retorna os dados a respeito do arquivo em formato json, inclusive o uuid do arquivo.

Stat

Onde uuid é o código que identifica de forma única o arquivo enviado. Retorna informação em formato json do arquivo enviado.

Eventos (log)

Todos os eventos são registrados, como em qualquer outro site. Apenas autoridades devidamente autorizadas poderão inspecionar os dados armazenados.

Licenciamento e futuras versões

O Filedrop não está disponível no momento para lincenciamento, ou seja, os direitos autorais são do autor e ele não está disponível de nenhuma forma sem autorização explícita do mesmo.

Por que isso? O backend do site não está maduro o suficiente, principalmente porque ele ainda não tem uma arquitetura que me agrada, apesar desta funcionar bem. Já estou desenvolvendo o que pode vir a ser o futuro desse site, o droute, mas não tenho tempo, ainda, para migrar os demais módulos para essa nova arquitetura. Além disso no nível gerencial, eu quero refazer o gerencimanto de usuário, permissões e álbuns usando o AngularJS, o que pode levar uma bom tempo. Além de terminar o blog que eu ainda não consegui.

Então é muito trabalho para mim fazer até eu conseguir colocar tudo isso em um formato que seja digno e por fim postar tudo no Github.

Anterior | Próximo