Sobre o projeto

Convex é um banco de dados reativo de código aberto voltado para desenvolvedores de aplicações web. Ele combina um banco de dados, um local para escrever funções de servidor e bibliotecas de cliente, permitindo que os desenvolvedores busquem dados e implementem lógica de negócios com forte consistência escrevendo TypeScript puro. O projeto foi criado para facilitar a construção e o dimensionamento de aplicações dinâmicas com atualização em tempo real. O backend é desenvolvido pela equipe do Convex, com o repositório público sincronizado ao trabalho interno em poucos dias. O README observa que o software é bem testado internamente, incluindo frameworks de teste randomizados, embora esses testes não façam parte da oferta de código aberto. Pequenas correções de bugs são bem-vindas, e o feedback é incentivado por meio do Discord. A maneira mais fácil de começar é pela plataforma de nuvem hospedada, que oferece um plano gratuito adequado para pequenas aplicações e projetos paralelos. Para quem prefere executar por conta própria, o produto self-hosted inclui a maioria dos recursos da nuvem, como o dashboard e a CLI, e funciona com ferramentas como Neon, Fly.io, Vercel, Netlify, RDS, SQLite e Postgres. O self-hosting pode ser feito com Docker (recomendado) ou com um binário pré-compilado, com instruções detalhadas no guia de self-hosting e suporte da comunidade no canal #self-hosted do Discord. O layout do repositório inclui código Rust em crates/, com o binário principal e um servidor de aplicação local_backend sobre o Runtime, além de npm-packages/ contendo pacotes TypeScript públicos e internos, como udf-runtime para o ambiente JS de funções definidas pelo usuário e system-udfs para funções de sistema usadas pela CLI. O README inclui avisos: quem faz self-hosting deve seguir o guia e alterar os segredos de instância padrão e as chaves de admin; o Convex é testado de forma mais completa no Linux e no Mac, com menos experiência no Windows; e as builds self-hosted incluem um beacon anônimo que pode ser desativado com a flag --disable-beacon. O beacon reporta apenas um identificador aleatório de implantação, a versão da migração do banco de dados, a revisão do git do backend e o tempo de atividade.