Executando verificação de segurança...
1

Criei meu próprio gerenciador de referências porque estava com preguiça de testar outros (OpenSource)

Minha aba de favoritos estava um caos.

Eu tenho um fluxo chato: pesquiso no PC, mas leio no tablet ou celular. O resultado era ter 8 abas abertas em cada dispositivo, ficar subindo PDF no Google Drive e tendo que baixar no outro dispositivo, PDFs duplicado e zero noção de onde eu tinha parado a leitura ou quais eu já tinha olhado só pelo título.

Fui atrás de resolver isso e as primeiras opções que achei faltavam um "tchan". Ou eram feias (interface de 1998), ou a sincronização mobile era paga/ruim.

Sinceramente? Me deu preguiça de baixar e testar mais dez softwares até achar um que prestasse.

Então resolvi fazer eu mesmo algo que fosse do meu agrado.

Os requisitos eram simples, mas restritivos:

  1. Tinha que ser (ou pelo menos parecer) moderno.
  2. Tinha que rodar liso no PC e no celular.
  3. Crucial: Tinha que rodar "eterno" nos planos gratuitos da Vercel e Supabase (custo zero).

Escolhi Vue.js (que já domino e gosto) e decidi usar Shadcn-vue (nunca tinha usado, mas achei a estética bonita e queria testar).

A parte básica foi rápida: autenticação, CRUD de coleções, Tags. Mas aí começaram os problemas reais.

Storage limitado (1GB)

Eu queria poder subir meus PDFs para ler em qualquer lugar. Mas o plano grátis do Supabase só dá 1GB. Se eu (ou outros usuários) começasse a subir livros e teses, isso ia estourar rapidinho.

A solução óbvia seria bloquear uploads grandes. A solução que eu implementei foi um Armazenamento Híbrido.

O front-end analisa o arquivo antes do upload:

  • Se for leve (até 512kb, maioria dos papers): Vai para a nuvem e sincroniza.
  • Se for pesado: O sistema intercepta e salva no IndexedDB do navegador.

Assim, não gasto banda nem storage com arquivos gigantes, mas mantenho o acesso fácil e offline no dispositivo onde o arquivo é mais usado.

Ainda não é o melhor caso, pois eu queria poder subir pelo PC para ler no tablet, mas eu ainda estou trabalhando em uma solução, talvez utilizar o Google Drive como armazenamento de sincronização, ou algo assim.

Preencher os dados das referências

Eu não queria digitar metadados na mão. Queria colar um DOI ou link do ArXiv e ver a mágica acontecer.

A maioria das API's que eu utilizei, como Crossref e OpenLibrary suportavam o CORS, mas o arXiv não (que infelicidade, meu favorito).

Tive que criar um proxy usando Supabase Edge Functions. O front pede pro meu backend, que pede pro ArXiv, e retorna para o front, sem perder tempo.

UX simples

Eu não gosto de ter um monte de modal pipocando na tela a cada botão que clico. Então, tentei deixar as funcionalidades mais soltas no fluxo, como o cadastro/remoção de tags e coleções, que são feitas no próprio input. Além disso, ao visualizar uma referência ele abre uma sidebar, para que tu não perca o fluxo anterior. Tudo isso usando os sheets e dialogs do shadcn-vue e stores do Pinia.

O Resultado

O Litdock agora faz o que eu precisava:

  • Importa automático (tenta até achar o PDF legalmente via Unpaywall).
  • Tem um leitor nativo onde implementei inversão de cores via CSS (tenho dificuldade de ler em fundo branco).
  • Funciona offline como PWA.

Ainda tem coisas para arrumar (quero integrar exportação BibTeX e busca direta por título), mas considerando que nasceu da falta de paciência com outras ferramentas, já está salvando minha organização.

O projeto é Open Source. Se quiserem ver o código ou usar:

E aí, já criaram ferramenta própria só pra não ter que configurar a dos outros?

Carregando publicação patrocinada...
1

bom dia, sr.

por que vercel/supabase? pergunta genuína, mesmo.

o sr conhece sobre self hosted? se eu quisesse colocar aqui em casa, em um orange pi 3b, no meu linuq, em um lenovo thinkcentre m715q, em um pentium monocore 2.0GHz seco, em uma madeira gamer, talvez seria "eternamente gratuito" também, considerando cloudflare tunnel. já subi via docker e disponibilizei pelo cloudflare tunnel gratuito meus serviços domésticos caseiros self hosted e até para imagens já prontas.

1

Eu escolhi porque eu queria ter o mínimo de trabalho com backend e pretendia subir logo. Fazer self-host eu teria que comprar esses servidores, mesmo que pequenos, configurar e ainda deixar eles ligados. Fora que a energia aqui cai toda hora então teria que colocar bateria também. No fim não seria "eternamente gratuito" teria tanto o custo de compra como o custo de manutenção, que mesmo sendo baixo não é de grátis.
Mas eu entendo seu ponto, mas para o meu caso o supabase e verceram eram mais rápidos.

1

sem perda de generalidade, sem aplicar restrições e delimitações quanto a escalabilidade (1 usuário vs 1000 usuários).
vamos considerar que hoje o projeto tem alguns usuários.

o sr crê que o projeto do sr demanda realmente que necessitemos de delegar infraestrutura (hardware) para a nuvem?

digamos que o sistema tem q funcionar só enquanto eu to com o computador ligado, pq sou eu qm vou usar. pq colocar na nuvem alheia?

se eu subir via docker localmente, conseguirei utilizar. porém, agora fiquei amarrado ao supabase. existe supabase self hosted, porém um prof mestre pesquisador 101% acadêmico no centésimo artigo do ano, entusiasta de self hosting pq ele tem instrução, sabendo q ele pega muitos pdf das annas e dos barcos gengen, pq ele vai se comprometer? e se são muitos, mesmo q fiscalização não exista, muitos PDFs a serem organizados talvez seja melhor q seja self hosting, pq talvez o sr não consiga oferecer armazenamento suficiente.

um prof mestre provavelmente tem hd externo, ssd externo. ele só precisa executar um install-lit.msi ou ./install-lit.sh e ser feliz, com um sqlite embarcado (não sou da seita, mas p/ este caso serve), usando filesystem msm local pq é mais organizado). é self hosted, é open source, e dá pra cobrar pelo uso, da mesma forma q muitos serviços oferecem cloud e alternativa self hosted.

não estou desmerecendo nada. estou conversando em um fórum técnico de gente técnica para gente técnica.

a Apache-2.0 license permite q eu faça modificações, eu sei. eu só não sei o pq de o sr ter colocado open source.

não importa muito o código. oq importa é juntar boas pessoas com um objetivo em comum q resolvam um problema da comunidade, da persona envolvida.

conheço muitos profs pesquisadores com qm estudei q usariam um sistema desse, e pagariam pela comodidade de usar localmente e ter uma nuvem adicional.

ainda acho q esse sistema todo, se fosse self hosted-first, consegue rodar em 1 núcleo com 2.0GHz reservado, 2MB de cache L3 compartilhado, e 1GB RAM reservado. uma IA se pedida entrega um docker-compose.yml e torna o sistema mais agnóstico e pronto para pessoas q querem algo simples, como eu.

o sr não precisa de comprar servidores, nem simples nem robustos. um pc veio consegue rodar isso, ao meu ver.

alta disponibilidade, balanceamento e escalonamento não são necessários. é um CRUD de metadados bibliográficos q pode facilitar a leitura local de arquivos. latência = irrelevante

cloud aqui é conveniência de desenvolvedor, não exigência do domínio, q nos responde como coloco algo no ar rápido com certeza, talvez não como atendo ao pesquisador real no caso de uso dele, no dia a dia dele.

a nuvem não traz ganho técnico aqui, só traz: custo, dependência, risco de lock-in, desconfiança do acadêmico.

falei td isso pq n temos apenas o comitê dos downvoters lendo. há tb os q estão aprendendo.

2

Não necessariamente ele fica amarrado ao Supabase, você pode hospedar praticamente em qualquer local que tenha um banco Postgres. Diferente do Firebase que te consome pro resto da vida.

Realmente foi uma comodidade e esse era o objetivo, eu normalmente trabalho com Laravel mas eu não estava afim de fazer uma API e lidar com toda a autenticação e coisas do tipo pra um projeto sem fins lucrativos.

Eu deixei open-source porque espero que as pessoas façam serviços mais bonitos, só não queria que pegassem a logo e o nome (por isso da Apache 2), de resto pode fazer uma fork e fazer uma versão self-hosted sem problema. Mas mesmo assim tu ainda teria dependências externas, já que alguns provedores de internet tem IP dinâmico e não permitem abrir portas externas, pra tu acessar o serviço de fora de sua rede local, então tu ainda precisaria de outro serviço de tunelamento como você citou.

1

Tava estagnado em alguns artigos por essa dificuldade, até que conheci o zotero. Ele tem app pra windows, tem extensão, tem app pra Android e ainda exporta suas referências em centenas de formatos de referências bibliográfica diferentes diretamente no seu word.

1

O zotero foi o primeiro que instalei, e broxei na hora. Parece que estava usando um app da prefeitura, além de que ele não mostrava as coisas do jeito que eu queria pra ficar organizado. Por isso que resolvi fazer o meu.

0