Pitch: Construí uma ferramenta pra rodar vários backends leves porque as opções prontas não cabiam no meu servidor
Não vou fazer propaganda aqui. Vou contar o problema que me fez construir isso e o que aprendi no caminho, porque acho que pode ajudar quem estiver no mesmo aperto.
O problema
Eu rodo projetos pessoais num servidor bem simples, só 1GB de RAM. Queria algo parecido com o Supabase para cada projeto: login de usuário, banco de dados, API pronta. Só que o Supabase completo, rodando localmente, consome facilmente 1 a 2GB de RAM sozinho, antes mesmo de eu colocar qualquer dado nele. Não cabia.
Testei o Appwrite também, e é a mesma história: precisa de bem mais memória do que eu tinha disponível.
A saída mais leve que encontrei foi o PocketBase, uma ferramenta que faz praticamente a mesma coisa mas usa uns 10 a 15MB de RAM. Só que ele tem uma limitação: cada projeto roda separado, sem um painel único pra ver todos juntos. Com 5 ou 6 projetos, eu ia ter que abrir vários terminais e decorar várias portas diferentes.
Procurei alguma ferramenta pronta que resolvesse isso e não achei nada estável o suficiente. As opções que existiam travavam com frequência ou criavam usuários administradores com senha previsível, o que é um problema sério de segurança.
O que eu construí
Criei o PacForge: um programa que gerencia várias instâncias do PocketBase ao mesmo tempo, com um painel único pra criar, ver, parar e apagar cada uma.
A decisão mais importante que tomei, depois de errar isso numa tentativa anterior, foi nunca deixar essas instâncias acessíveis diretamente pela internet. Só o programa principal fica exposto, e ele que decide pra qual projeto encaminhar cada pedido. Assim, mesmo que uma instância nasça com uma senha fraca, ninguém de fora consegue chegar nela diretamente.
Também fiz o sistema reiniciar sozinho se algum projeto travar, e baixar automaticamente o programa do PocketBase na primeira vez que roda, sem precisar fazer isso na mão.
O que aprendi
O código foi feito com ajuda de inteligência artificial do início ao fim, e não tenho problema em admitir isso. Mas o que eu realmente aprendi não foi sobre como pedir código pra IA. Foi que entender bem o problema continua sendo trabalho meu. Os primeiros testes que fiz erraram justamente no ponto de segurança, porque eu ainda não tinha entendido direito o que precisava ser protegido. Só depois de ver esse erro na prática consegui corrigir.
Decisões como essa não vêm de simplesmente pedir pra IA decidir. Vêm de entender as consequências de cada escolha pro que eu realmente precisava.
Links
Repositório: https://github.com/pacdt/pacforge
Pacote npm: https://www.npmjs.com/package/pacforge
Se alguém já passou por esse mesmo aperto de rodar vários projetos com pouco recurso, ou quiser criticar as escolhas que fiz, fico muito feliz em ouvir. É meu primeiro projeto open source de verdade.