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
Mercado Helper
Listas de compras para usar no celular: marque o que foi para o carrinho, veja o total e consulte o histórico.
Ver projeto No arWave Radio
Rádio de madeira e latão no navegador: gire a sintonia, aperte as teclas e ouça Lofi, Vaporwave, Synthwave, Chillwave e Millionairewave, com som em cada botão.
Ver projeto No arMega Generator
Gerador de dados fictícios: CPF, CNPJ, pessoas, empresas, vagas, posts e esquemas personalizados em JSON, para testes e protótipos.
Ver projeto