Sobre o SorlaDB

O SorlaDB é um banco de dados de documentos open source que vive em memória, no navegador ou no Node. Você guarda objetos JavaScript comuns e trabalha com eles usando a linguagem do MongoDB que talvez já conheça: find, $in, $regex, $set, bulkWrite. Sem ida e volta ao servidor.

Ele não é um banco de dados no sentido tradicional. Nada é instalado e nada roda em servidor. Pense nele como um motor para os seus dados: uma camada pequena e rápida que transforma os arrays da sua aplicação em coleções que você pode consultar, atualizar, validar e observar, e que mantém seus componentes React, Vue, Svelte ou Angular sincronizados conforme os dados mudam.

Isso abre muitas portas: grids de dados avançados, comboboxes com filtros inteligentes, catálogos com busca facetada, dashboards ao vivo, formulários validados por schema e telas que carregam 100 000 linhas do seu backend sem travar. Tudo isso em 54 kB, sem dependências.

SorlaDB orca holding code brackets

Nossa história

Por que o nome Sorla

Todo projeto começa com um motivo. Este começa com um nome.

Sorla é um acrônimo do nome da minha mãe. Ela me deu a vida, me ensinou e me guiou até a pessoa que sou hoje. Quando chegou a hora de dar nome ao projeto que mais importa para mim, nenhum outro nome fazia sentido.

Minha mãe faleceu de câncer. Ver alguém que você ama enfrentar essa doença muda a forma como você enxerga tudo: o tempo parece mais curto, e as pessoas que nos formaram se tornam ainda mais preciosas.

Sendo sincero, o câncer é uma das coisas mais tristes deste mundo. Ele leva as pessoas cedo demais e pesa sobre todos que estão ao lado delas. Se eu pudesse escolher, ninguém mais no mundo teria câncer.

Essa escolha não está nas minhas mãos. O que eu posso fazer é manter o nome dela trabalhando do jeito que ela sempre fez: ajudando os outros. O SorlaDB nasceu para homenageá-la e para levar adiante o que ela me ensinou: criar coisas que deixem a vida das pessoas mais leve. Para mim, isso começa dando ao frontend mais flexibilidade e instrumentos melhores, uma versão de cada vez.

Anderson ArrudaFundador do SorlaDB · #andmarruda

Em resumo

O que o SorlaDB entrega ao seu frontend

Quem trabalha com frontend reconstrói a mesma infraestrutura de dados o tempo todo: filtrar esta lista, ordenar aquela tabela, manter dois componentes sincronizados, validar um formulário, carregar uma base grande sem travar a página. O SorlaDB dá ao frontend os instrumentos que o backend sempre teve, e esse trabalho passa a levar poucas linhas em vez de centenas.

O que é
Um banco de dados de documentos em memória para JavaScript, no navegador ou no Node 18+. Sem servidor, sem dependências.
Consultas do MongoDB
find, findOne e count com $and, $or, $nor, $not, $in, $nin, $regex, $exists, comparações e caminhos com ponto. Cursores ordenam (com collation), pulam, limitam e projetam.
Escrita segura
$set, $unset, $inc, $push, $pull, upserts, replaceOne e bulkWrite. Lotes são tudo ou nada, e você sempre recebe cópias.
Reativo
Eventos de mudança e consultas vivas com watch(), com integrações para React, Vue, Svelte e Angular, e observables do RxJS.
Conectado
Carregue 100 000+ linhas em blocos por Server-Sent Events, ou pagine e receba mudanças ao vivo por WebSocket.
Pequeno e rápido
54 kB, tipos TypeScript, licença MIT. Um índice de _id e cópia na leitura deixam 100 000 documentos confortáveis.

Casos de uso

O que você pode construir com o SorlaDB

Algumas ideias para começar. Todo trecho abaixo é código SorlaDB de verdade.

Grids de dados avançados

Filtre, ordene por várias colunas e pagine milhares de linhas no cliente, sem uma requisição a cada clique.

products.find({ price: { $gte: 10, $lte: 50 } })
  .sort({ rating: -1, name: 1 })
  .skip(page * 25).limit(25)
  .toArray();

Comboboxes com filtros inteligentes

Busca sem diferenciar maiúsculas enquanto a pessoa digita, ordenada do jeito que se lê, com acentos.

cities.find({ name: { $regex: '^' + term, $options: 'i' } })
  .sort({ name: 1 }, { collation: { locale: 'pt-BR', sensitivity: 'base' } })
  .limit(10).toArray();

Busca facetada e catálogos

Combine categorias, faixas de preço e disponibilidade em barras de filtro que respondem na hora.

products.find({
  category: { $in: ['shoes', 'bags'] },
  $or: [{ onSale: true }, { stock: { $gt: 0 } }]
}).length;

Interfaces vivas em qualquer framework

Uma consulta viva mantém os componentes atualizados: só os documentos que mudaram são renderizados de novo, em React, Vue, Svelte ou Angular.

import { useQuery } from 'sorla-db/react';

const open = useQuery(db.tasks, { done: false },
  { sort: { due: 1 } });   // re-renders on change

Formulários validados por schema

Ligue um formulário HTML a uma coleção: valores tipados, erros por campo e mensagens acessíveis sem esforço extra.

users.bindForm('#signup', {
  generate: true,
  onSuccess: ({ id }) => console.log('saved', id)
});

Carrinhos de compra e estado da aplicação

Mantenha quantidades e itens consistentes com operadores de atualização atômicos, em vez de reducers escritos à mão.

cart.updateOne({ sku: 'A-42' },
  { $inc: { qty: 1 } }, { upsert: true });
cart.updateOne({ _id: id }, { $pull: { coupons: 'OLD10' } });

Bases grandes vindas do backend

Receba 100 000+ linhas em blocos com progresso, e depois filtre e ordene no cliente sem outra ida ao servidor.

const loading = db.orders.stream('/api/orders/stream', {
  onProgress: ({ loaded, total }) => bar.set(loaded / total)
});
await loading.done;   // then query it like any collection

Protótipos e testes

Modele um backend real com schemas e fixtures antes de a API existir, e mantenha os testes rápidos e determinísticos.

sorla.db.createCollection('users', userSchema);
sorla.db.users.insertMany(fixtures);
expect(sorla.db.users.count({ role: 'admin' })).toBe(1);

Comece agora

Funcionando em menos de um minuto

Instale com npm ou adicione uma única tag script em qualquer página. Os tipos TypeScript já vêm inclusos.

npm
npm install sorla-db

import sorla from 'sorla-db';
CDN
<!-- 54 kB, registers window.sorla -->
<script src="https://cdn.jsdelivr.net/npm/sorla-db@1/dist/sorla.min.js"></script>
Primeira coleção
const app = new sorla();
app.useDb('shop');
app.db.createCollection('products');

app.db.products.insertMany([
  { name: 'Coffee', price: 12.5, tags: ['hot'] },
  { name: 'Tea', price: 8, tags: ['hot', 'herbal'] },
  { name: 'Juice', price: 9.9, tags: ['cold'] }
]);

app.db.products.find({ price: { $lt: 10 } }).sort({ price: 1 }).toArray();
// [{ name: 'Tea', price: 8, … }, { name: 'Juice', price: 9.9, … }]

Quem somos

Sysborg: a empresa por trás do SorlaDB

A Sysborg é a empresa de software fundada por Anderson Arruda. Criamos produtos SaaS e ferramentas open source para quem quer resolver o trabalho de verdade sem brigar com o software.

Nossos produtos compartilham uma base: uma única Conta Sysborg. Você entra uma vez e navega entre todos os produtos Sysborg com a mesma identidade. Tudo o que criamos se conecta a essa base, então cada novo produto parece familiar desde o primeiro clique.

O SorlaDB também faz parte dessa base. Ele nasceu para dar vida à próxima geração de ferramentas da Sysborg: interfaces cheias de dados que respondem na hora, porque os dados já estão no navegador. Abrimos o código para que qualquer pessoa desenvolvedora possa construir do mesmo jeito.

Uma conta, todos os produtos
Entre uma vez com a Conta Sysborg e navegue entre todos os produtos Sysborg. Sem senhas novas, sem cadastros separados.
Produtos pequenos e focados
Cada produto resolve um problema e resolve bem, por isso é rápido de aprender e fácil de adotar.
Open source na essência
O SorlaDB tem licença MIT. Quando uma peça pode ajudar outras pessoas desenvolvedoras, a gente compartilha.
Feito para crescer com você
Nossos produtos começam simples para uma pessoa e escalam para equipes, numa infraestrutura pensada para o longo prazo.

Mais produtos estão a caminho, e vários deles vão rodar sobre o SorlaDB. Se quiser acompanhar, siga o repositório no GitHub.

FAQ

Perguntas frequentes

O SorlaDB é um banco de dados?

Não no sentido tradicional. O SorlaDB é um banco de dados de documentos que vive em memória dentro da sua aplicação, no navegador ou no Node: nada para instalar em servidor, nenhuma string de conexão. Ele transforma os dados que sua aplicação já tem em coleções que você pode consultar, atualizar, validar e observar com a linguagem do MongoDB.

O SorlaDB salva meus dados?

Não sozinho. Os dados ficam em memória enquanto a página ou o processo estiver rodando. O SorlaDB é uma camada de trabalho rápida sobre a sua API, não um substituto para o banco de dados do backend. Para guardar dados, escute os eventos de mudança e salve onde quiser (a documentação tem uma receita com localStorage), ou carregue de volta do servidor com stream() ou connect().

Com quais frameworks ele funciona?

Com qualquer um, ou nenhum. O SorlaDB é JavaScript puro e traz integrações opcionais: useQuery para React, Vue e stores do Svelte, e signals do Angular. Ele também roda no Node 18+. Instale pelo npm ou adicione uma tag script que registra window.sorla. As declarações TypeScript já vêm inclusas.

Qual é o tamanho dele?

O build para navegador tem 54 kB, sem dependências, e as integrações com frameworks são pontos de entrada separados, então você só leva o que usar.

O SorlaDB é gratuito?

Sim. O SorlaDB é open source sob a licença MIT, e o código está no GitHub em github.com/sysborg/sorla-db. Contribuições são bem-vindas.

Quem faz o SorlaDB?

O SorlaDB é feito pela Sysborg, a empresa de software fundada por Anderson Arruda. A Sysborg cria produtos SaaS conectados por uma única Conta Sysborg, e o SorlaDB faz parte da base das suas próximas ferramentas.

O que significa o nome Sorla?

Sorla é um acrônimo do nome da mãe do fundador. Ela faleceu de câncer, e o projeto foi criado para homenageá-la por ter dado a vida a ele e por tê-lo guiado até se tornar quem ele é hoje.

Conheça o time

Desenvolvido em aberto

O SorlaDB é desenvolvido pela Sysborg. Começou como uma ideia do nosso fundador, #andmarruda, e cresce a cada issue, pull request e sugestão da comunidade.

Quer ajudar? Contribua no GitHub. Código, documentação e ideias são sempre bem-vindos.

#andmarruda

#andmarruda

Fundador

Sysborg

Sysborg

Empresa