Nas últimas semanas venho desenvolvendo um projeto pessoal chamado FileSwift e achei que poderia interessar ao pessoal daqui.
A ideia surgiu porque eu queria uma forma simples de compartilhar arquivos entre dispositivos da rede local, sem depender de serviços em nuvem ou instalar aplicativos em cada equipamento.
O resultado foi um pequeno servidor de arquivos que roda em qualquer computador e pode ser acessado pelo navegador. Assim, qualquer dispositivo da rede (Linux, Windows, Android, iPhone, macOS…) consegue enviar e baixar arquivos sem precisar instalar cliente.
Uma forma simples de resumir a ideia é: um “AirDrop sem ecossistema”.
O que ele faz?
Upload e download de arquivos;
Navegação por pastas;
Criação e exclusão de diretórios;
Interface totalmente via navegador;
Tudo permanece dentro da rede local.
Além disso, acabei adicionando um recurso que uso bastante no dia a dia: um sistema simples de notas rápidas com anexos em PDF. Hoje ele serve para guardar etiquetas dos Correios, comprovantes e confirmações de pedidos da nossa editora, facilitando encontrar esses documentos depois.
Tecnologias
O projeto é escrito em Python + Flask, é open source (licença MIT) e atualmente possui:
Script de instalação para praticamente qualquer distribuição Linux;
Pacote .deb para Debian/Ubuntu e derivados;
Instalador para Windows.
GitHub
É um projeto de hobby que foi crescendo conforme minhas próprias necessidades. Ainda tenho várias ideias para implementar, então qualquer sugestão, crítica, relato de bug ou contribuição será muito bem-vindo.
parabéns. gosto de ver gente caprichosa, que faz um trabalho bem feito. seu conceito é muito interessante. manter as coisas simples e funcionais num mundo cada vez mais complexo e cheio de recursos tecnológicos desnecessários.
Muito maneiro!
Parabéns pela iniciativa. Ficou bem legal.
No meu dia a dia eu costumo usar o LocalSend, depois dá uma olhada nesse app, de repente te trás algum insight pra melhorar o File Swift.
Valeu pela sugestão! Já tinha ouvido falar do LocalSend, mas vou conhecer melhor. Vc poderia listar os recursos do LocalSend que combinariam com o FileSwift?
Kyqyk, muito obrigado pela contribuição! Fico muito feliz que o FileSwift tenha rodado bem no seu homelab e, mais ainda, por você ter dedicado um tempo para abrir um PR.
Revisei o código com calma e testei a implementação aqui. Gostei bastante do cuidado que você teve, principalmente com o .dockerignore, evitando que arquivos como fileswift.db, config.json e static/download/ acabem indo para a imagem.
Encontrei apenas um ponto que vale ajustar antes do merge: usando a rede padrão do Docker (bridge), o FileSwift acaba detectando o IP interno do container (por exemplo, 172.17.x.x) em vez do IP real da máquina. Com isso, o QR Code e o fs.local passam a apontar para um endereço que outros dispositivos da rede não conseguem acessar. O restante da aplicação funciona normalmente.
Acho que, para o seu cenário no Ubuntu Server, usar network_mode: host no docker-compose.yml resolveria esse comportamento (e, nesse caso, o ports: pode ser removido). Se você puder dar uma olhada nisso, acredito que o PR ficará pronto para o merge.
Como observação, o ffmpeg instalado no Dockerfile não parece estar sendo utilizado, então pode ser removido para deixar a imagem um pouco menor. Também notei algumas linhas duplicadas no .dockerignore, mas são detalhes pequenos.
Mais uma vez, muito obrigado! Este é o primeiro PR externo do projeto, então ele tem um significado especial para mim.
Também gosto bastante do KDE Connect! Longe de mim querer criar algo para substituí-lo. No meu caso, porém, às vezes justamente quando eu precisava resolver algo rápido, acabava tendo dificuldades com a descoberta automática entre alguns dispositivos da rede. O FileSwift acabou surgindo dessa necessidade: uma solução baseada no navegador, onde basta acessar o endereço do servidor e tudo já funciona, sem precisar instalar aplicativos nos outros dispositivos.
Parabéns pelo projeto, tô até pensando em dar uma olhada, e já que eu sei um pouco de flask posso tentar dar uma contribuída, por mais que eu não sou muito bom em programação eu vou tentar contribuir, fiz até um pr lá
PixelCat, ficou muito bom! Testei a implementação aqui e o tema escuro com os cards deu outra cara para a interface. Antes da sua alteração, a janela tinha um jeitão de “programa do Windows 98” . Gostei bastante do contraste.
Só deixo uma sugestão antes do merge: o botão “Copiar URL” ficou com uma cor bem parecida com a dos botões “Parar” e “Sair”, que representam ações mais críticas. Como copiar a URL é uma ação inofensiva, acho que uma cor neutra (como o mesmo azul usado no link) ajudaria a diferenciar melhor as funções e evitar confusão. O que vc acha?