Ferramentas · No ar

ShareSoFast

Envie um arquivo. Em 24 horas ele some.

Compartilhe um arquivo de até 25 MB por um link curto, com senha e uma carta opcional. Depois de 1 dia, tudo é apagado de verdade.

Sobre o projeto

O que é o ShareSoFast

O ShareSoFast é para aquele momento em que você precisa mandar um arquivo para alguém e não quer pensar nele depois. Você escolhe o arquivo, ganha um link curto e envia. Passadas 24 horas, tudo é apagado de verdade: não sobra nada para esquecer de excluir.

Dá para proteger o link com uma senha e escrever uma mensagem. Quem recebe vê um envelope: ao abrir, a carta aparece com o seu texto e os botões de baixar e de visualizar (imagens, vídeos, áudios, PDFs e textos abrem na hora). O limite é de 25 MB por arquivo, e o histórico dos seus envios fica só no seu navegador, sem conta e sem cadastro.

Por baixo, é um experimento assumido: os arquivos ficam dentro de um banco SQLite em modo WAL, em uma coluna BLOB, e todas as operações passam por uma fila que executa uma por vez. Os prós e os contras dessa escolha estão em Tecnologias, logo abaixo.

Recursos

O que o ShareSoFast faz

Link curto, na hora

Escolha o arquivo e acompanhe o envio com porcentagem, velocidade e tempo restante. O link, do tipo /s/k7Hq2mXa, fica pronto assim que termina.

Some em 24 horas

Cada envio vence depois de um dia e uma limpeza automática apaga o arquivo de verdade. Dá para apagar antes, pelo seu histórico.

Senha opcional

Quem abre o link precisa digitar a senha. As tentativas erradas são limitadas para impedir que alguém fique adivinhando.

Carta com a sua mensagem

Escreva um recado de até 1.000 caracteres. Quem recebe abre um envelope animado e lê a carta antes de baixar.

Visualizar antes de baixar

Imagens, vídeos, áudios, PDFs e textos podem ser vistos na hora. Qualquer outro tipo vai direto para o download.

Histórico no seu navegador

Seus envios aparecem em uma lista com o tempo que falta para cada um sumir. Ela fica salva no navegador, sem conta e sem cadastro.

Visualizações e downloads

Quem abre o link vê quantas vezes o envio foi aberto e baixado. Quem enviou acompanha os mesmos números no histórico.

Apague quando quiser

Não precisa esperar as 24 horas: o botão Apagar agora, no histórico, destrói o arquivo na hora.

Números abertos

A tela inicial mostra quantos envios, visualizações e downloads já aconteceram em todo o período, em uma tabela que só aumenta.

Tecnologias

Por dentro do ShareSoFast

SQLite em modo WAL

Um único arquivo de banco guarda tudo. O modo WAL deixa leituras e escritas conviverem. Depois de cada limpeza o arquivo encolhe e o log de escrita é esvaziado, então o conteúdo apagado não sobra em lugar nenhum do banco.

Fila com concorrência 1

Toda operação no banco entra em uma fila (p-queue) que executa uma por vez. Sem duas operações ao mesmo tempo não há disputa de trava nem erro de busy timeout. Se a fila encher, o servidor responde 503 em vez de travar.

Arquivos em coluna BLOB

O conteúdo fica na própria linha, ao lado de uma coluna de metadados em JSON (tipo, categoria, tamanho e SHA-256). É simples e tudo some junto com a linha. O custo: o banco cresce e cada leitura carrega o arquivo inteiro na memória, por isso o limite de 25 MB.

Tipo conferido pelo conteúdo

O tipo é descoberto pelos primeiros bytes do arquivo, não pelo que o navegador diz. Só imagens, vídeos, áudios, PDFs e textos confirmados abrem no navegador; o resto é sempre download, com cabeçalhos que impedem a execução de qualquer coisa.

Senha com scrypt

A senha nunca é guardada, só o seu hash (scrypt, com sal). Quem acerta ganha um cookie assinado com HMAC, válido apenas para aquele arquivo.

Limite de tentativas

Janela deslizante em memória: envios por IP, senhas erradas por IP e arquivo, senhas erradas por arquivo (contra vários IPs) e links que não existem. Tudo é conferido antes de o servidor ler o corpo do envio.

Envio com progresso real

O navegador manda o arquivo como binário puro, com XMLHttpRequest, e mede o envio de verdade. Sem multipart e sem biblioteca para ler formulário no servidor.

Ids curtos

Oito caracteres sorteados com crypto.randomInt, sem os que se confundem (0, O, 1, l e I): cerca de 46 bits de aleatoriedade.

Tabela que só aumenta

Os totais da tela inicial ficam em uma tabela com triggers do SQLite que recusam diminuir ou apagar um número. Cada contagem entra na mesma transação do fato contado, e os pedidos barrados são somados em memória e gravados juntos, uma vez por minuto.

Node, Express e Eta

A mesma base do resto do portfólio. Sem etapa de build e sem framework de front: HTML no servidor, CSS e um JavaScript pequeno no navegador. A carta abrindo é só CSS 3D.

FAQ

Perguntas frequentes

Por que só 24 horas?

É a ideia do projeto: um compartilhamento rápido que se apaga sozinho, para você não precisar lembrar de excluir.

Qual é o tamanho máximo?

25 MB por arquivo.

Preciso criar uma conta?

Não. O histórico dos seus envios fica só no navegador que você usou. Se limpar os dados do navegador, a lista some, mas o link continua valendo até vencer.

Posso apagar um envio antes das 24 horas?

Pode, pelo botão Apagar do histórico, no mesmo navegador em que você fez o envio.

Alguém consegue adivinhar o meu link?

É improvável: são 8 caracteres sorteados (cerca de 46 bits), as tentativas em links que não existem são limitadas e você ainda pode proteger o arquivo com uma senha.

Guardar arquivos dentro do SQLite é uma boa ideia?

Para arquivos pequenos e de vida curta funciona bem e simplifica tudo: um só arquivo de banco e um só lugar para apagar. Os contras: o banco cresce, cada leitura carrega o arquivo inteiro na memória e por isso existe o limite de 25 MB. Este projeto é justamente o teste na prática dessa escolha.

O que acontece depois das 24 horas?

O arquivo, a mensagem e a senha são apagados do banco, o espaço é devolvido e o log de escrita do SQLite é truncado. Não existe lixeira.

Como são contadas as visualizações e os downloads?

Uma visualização por visitante a cada 30 minutos, só depois que o conteúdo aparece (com senha, depois de digitá-la). Os robôs que montam a prévia do link em aplicativos de mensagem não entram na conta. Cada download completo conta uma vez.

Os números da tela inicial guardam dados pessoais?

Não. São só contadores: quantos envios, visualizações e downloads aconteceram, o tamanho total e o tipo mais enviado. Nome de arquivo, mensagem, senha e IP não ficam nessa tabela, e os totais continuam mesmo depois que os arquivos somem.

E se o servidor lotar?

Há um teto de 9 GB de dados. Se chegar nele, o servidor para temporariamente de aceitar arquivos e avisa para você voltar mais tarde. Como tudo some em 24 horas, o espaço volta sozinho.

Continue explorando

Veja também

Todos os projetos