4

Pitch: Criei um Gerenciador de Snippets Local-First (Go + React) para nunca mais esquecer comandos no terminal

Fala, pessoal do TabNews! Tudo bem?
Sabe aquele comando gigante do Docker, aquela flag obscura do Git ou aquela query SQL complexa que a gente usa uma vez por mês e sempre esquece? Eu estava cansado de caçar isso no histórico do terminal ou no bloco de notas, então decidi criar uma ferramenta para resolver a minha própria dor.
Nasceu o SnippetCLI + Web Dashboard.
O diferencial que eu quis trazer foi a arquitetura Local-First. Eu queria algo que fosse estupidamente rápido no terminal, que funcionasse 100% offline, mas que eu pudesse acessar pelo navegador ou sincronizar com outro PC quando tivesse internet.
🛠️ Como funciona na prática?
Tudo começa no terminal. Se eu acabei de criar um comando útil, eu salvo direto lá:
Bash

snippet save "docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=123 postgres" -t "Iniciar Postgres" --tag docker --tag db

Quando eu preciso do comando, eu não preciso abrir o navegador. Eu rodo um find e ele copia automaticamente para a minha área de transferência (clipboard):
Bash

snippet find postgres

Retorna o comando e já dá o Ctrl+C automático!

E a mágica acontece com o sync:
Bash

snippet sync

🔄 Sync concluído! 3 enviados (Push), 2 recebidos (Pull).

💻 A Stack Tecnológica
Para garantir performance e uma boa DX (Developer Experience), dividi o projeto assim:

  • CLI (O Motor Local): Feito em Go (usando Cobra). Salva tudo num banco SQLite local. Escolhi Go porque compila para um binário único e não exige runtime na máquina do usuário.
    
  • API (O Cérebro na Nuvem): Feita em Go (com Gin e GORM). Hospedada gratuitamente no Render.
    
  • Banco de Dados Cloud: PostgreSQL hospedado no Supabase.
    
  • Dashboard Web : Feito em React + Vite com Tailwind CSS v4. Hospedado na Vercel. É um painel com Dark Mode e Syntax Highlighting para visualizar, criar e gerenciar os snippets de forma visual.
    

🧠 O Maior Desafio: Sincronização Two-Way
O maior aprendizado foi implementar a sincronização bidirecional entre o SQLite local e o Postgres na nuvem.
Tive que lidar com:

  • UUIDs em vez de IDs sequenciais (para evitar colisões offline).
    
  • Soft Deletes (marcar deleted_at no SQLite para avisar a nuvem que o comando foi apagado).
    
  • Resolução de Conflitos usando Upsert (Insert on Conflict Update) baseado em timestamps de modificação.
    

🔗 Links e Próximos Passos
Ainda estou a refinar o código, mas a base já está em produção para o meu uso diário.

Repositório da CLI & API: https://github.com/itonly75-ai/snippet-cli & https://github.com/itonly75-ai/snippet-api
Repositório do Frontend: https://github.com/itonly75-ai/snippet-web#
Dashboard Web: https://snippetweb.vercel.app/
email: teste@teste.com & password:password123

Queria muito a opinião de vocês! O que acham dessa abordagem Local-First? Alguém já implementou sincronização offline/online e tem dicas de como lidar com conflitos de forma mais eficiente (CRDTs, talvez)?
Qualquer feedback sobre a arquitetura ou ideias de novas features será muito bem-vindo! Valeu!

Carregando publicação patrocinada...
1

Meus 2 cents,

Parabens pela iniciativa !

Essa questao de guardar e sincronizar comandos de fato eh um diferencial de produtividade - em especial o frontend que voce criou (eh bem legal).

Repositorio devidamente starreado e forkeado - obrigado por compartilhar !

Existem dois projetos que tem aboardagem semelhante:

E algumas alternativas:

Saude e Sucesso !


Este post foi favoritado via extensão TABNEWS FAVORITOS

Tem curiosidade sobre IA ? Da uma olhada no meu LIVRO: IA PARA ENGENHEIROS

0