npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@jeandev_2030/jsdb

v2.0.4

Published

đŸ—„ïž Banco de dados JSON modular, escalĂĄvel e puro com Node.js - Sem dependĂȘncias externas

Readme

đŸ—„ïž JsDB - Banco de Dados JSON Modular

Um banco de dados JSON modular, escalĂĄvel e puro com Node.js. Sem dependĂȘncias externas, pronto para produção!

Version Node License


✹ Características

✅ Totalmente Modular - Arquitetura escalável e bem organizada
✅ Zero DependĂȘncias - Usa apenas o Node.js nativo
✅ Type Safe - Validação de dados integrada
✅ Performance - Sistema de índices para buscas rápidas
✅ PersistĂȘncia AutomĂĄtica - Salva dados em JSON automaticamente
✅ API Simples - Fácil de usar e aprender
✅ Pronto para Npm - Pode ser instalado em qualquer projeto


📩 Instalação

Local (desenvolvimento)

git clone https://github.com/jeanbyte2030-ops/JsDB.git
cd JsDB
npm install

🚀 Uso Rápido

1. Importar o mĂłdulo

const { Database } = require('./index');
// ou
const JsDB = require('./index');
const { createDatabase } = JsDB;

2. Criar database

const db = new Database('./meu-database.json');

// ou usar factory function
const db = createDatabase('./meu-database.json');

3. Criar tabelas

db.createTable('usuarios');
db.createTable('posts');

4. OperaçÔes CRUD

CREATE (Inserir)

const novoUsuario = db.insert('usuarios', {
  nome: 'JoĂŁo Silva',
  email: '[email protected]',
  idade: 25
});

console.log(novoUsuario);
// { id: '1234567890abc', nome: 'JoĂŁo Silva', email: '[email protected]', idade: 25, createdAt: '2025-01-23T...' }

READ (Buscar)

// Buscar todos
const todos = db.findAll('usuarios');

// Buscar por ID
const usuario = db.findById('usuarios', 'id-do-usuario');

// Buscar com filtro
const resultado = db.find('usuarios', { idade: 25 });
const resultado = db.find('usuarios', { ativo: true });

// Buscar com função (predicate)
const maioresDeIdade = db.find('usuarios', user => user.idade >= 18);

UPDATE (Atualizar)

db.update('usuarios', 'id-do-usuario', {
  idade: 26,
  ativo: false
});

DELETE (Deletar)

// Deletar um registro
db.delete('usuarios', 'id-do-usuario');

// Deletar toda tabela
db.dropTable('usuarios');

đŸ§Ș CLI Interativo (estilo mongosh)

VocĂȘ pode usar o JsDB no terminal para gerenciar tabelas e registros.

Rodar localmente

node bin/jsdb

Escolher arquivo

node bin/jsdb --file ./meu-db.json

Usando como comando global (apĂłs npm link)

npm link
jsdb --file ./meu-db.json

Comandos principais

help
use <arquivo>
show tables
create table <tabela>
drop table <tabela>
insert <tabela> <json>
find <tabela> <json>
findall <tabela>
findbyid <tabela> <id>
update <tabela> <id> <json>
delete <tabela> <id>
deleteall <tabela>
count <tabela>
info
save
load
config <json>
exit

Exemplos

create table usuarios
insert usuarios {"nome":"Ana","idade":22}
find usuarios {"idade":22}
update usuarios 123 {"ativo":true}
delete usuarios 123

📚 API Completa

Database Methods

| Método | Descrição | Exemplo | |--------|-----------|---------| | createTable(nome, registros?) | Cria nova tabela | db.createTable('usuarios') | | insert(tabela, obj) | Insere registro | db.insert('usuarios', {...}) | | findAll(tabela) | Lista todos | db.findAll('usuarios') | | findById(tabela, id) | Busca por ID | db.findById('usuarios', id) | | find(tabela, filtro) | Busca com filtro/predicate | db.find('usuarios', {ativo: true}) | | update(tabela, id, obj) | Atualiza | db.update('usuarios', id, {...}) | | delete(tabela, id) | Deleta | db.delete('usuarios', id) | | count(tabela) | Conta registros | db.count('usuarios') | | getTables() | Lista tabelas | db.getTables() | | dropTable(tabela) | Remove tabela | db.dropTable('usuarios') | | deleteAll(tabela) | Limpa todos os registros | db.deleteAll('usuarios') | | configure(config) | Configura DB | db.configure({autoSave: true}) | | save() | Salva manualmente | db.save() | | load() | Carrega do arquivo | db.load() | | getInfo() | Info do database | db.getInfo() |


⚙ Configuração

const db = new Database('./data.json');

// ou passar config no construtor
const dbComConfig = new Database('./data.json', {
  autoSave: true,
  prettyPrint: true,
  encoding: 'utf-8'
});

// Configurar opçÔes
db.configure({
  autoSave: true,      // Salva automaticamente após cada operação
  prettyPrint: true,   // Formata JSON com indentação
  encoding: 'utf-8'    // Encoding do arquivo
});

💡 Exemplos Práticos

Exemplo 1: Gerenciador de Tarefas

const { Database } = require('@jeanbyte/jsdb');

const db = new Database('./tarefas.json');

// Criar tabela
db.createTable('tarefas');

// Adicionar tarefas
db.insert('tarefas', {
  titulo: 'Estudar JavaScript',
  concluida: false,
  prioridade: 'alta'
});

db.insert('tarefas', {
  titulo: 'Fazer exercĂ­cios',
  concluida: true,
  prioridade: 'média'
});

// Buscar tarefas nĂŁo concluĂ­das
const pendentes = db.find('tarefas', { concluida: false });
console.log('Tarefas pendentes:', pendentes);

// Marcar como concluĂ­da
const tarefa = db.findAll('tarefas')[0];
db.update('tarefas', tarefa.id, { concluida: true });

Exemplo 2: Sistema de Blog

const db = new Database('./blog.json');

// Criar tabelas
db.createTable('posts');
db.createTable('comentarios');

// Criar post
const post = db.insert('posts', {
  titulo: 'Meu primeiro post',
  conteudo: 'Lorem ipsum...',
  autor: 'JoĂŁo',
  likes: 0
});

// Adicionar comentĂĄrios
db.insert('comentarios', {
  postId: post.id,
  autor: 'Maria',
  texto: 'Adorei o post!'
});

// Buscar comentĂĄrios de um post
const comentarios = db.find('comentarios', { postId: post.id });
console.log(`Post tem ${comentarios.length} comentĂĄrios`);

Exemplo 3: Ecommerce Simplificado

const db = new Database('./ecommerce.json');

db.createTable('produtos');
db.createTable('carrinho');

// CatĂĄlogo
const notebook = db.insert('produtos', {
  nome: 'Notebook',
  preco: 3500,
  estoque: 10,
  categoria: 'eletrĂŽnicos'
});

// Carrinho do cliente
db.insert('carrinho', {
  clienteId: 'cliente-123',
  produtoId: notebook.id,
  quantidade: 2,
  precoTotal: 7000
});

// Atualizar estoque
db.update('produtos', notebook.id, {
  estoque: 8
});

// Gerar relatĂłrio
console.log(`Total de produtos: ${db.count('produtos')}`);
console.log(`Itens no carrinho: ${db.count('carrinho')}`);

📂 Estrutura do Projeto

JsDB/
├── bin/
│   └── jsdb             # CLI do terminal
├── index.js              # Entry point do módulo
├── src/
│   ├── cli.js           # CLI interativo
│   ├── Database.js       # Classe principal
│   ├── Table.js          # Classe de tabela
│   └── Utils.js          # Utilitários
├── examples/
│   ├── exemplo1-basico.js
│   ├── exemplo2-avancado.js
│   └── exemplo3-modulo.js
├── data.json             # Arquivo de dados
├── package.json          # Metadados
└── README.md             # Este arquivo

đŸ§Ș Testando

# Executar exemplo bĂĄsico
npm run example:basico

# Executar exemplo avançado
npm run example:avancado

# Executar exemplo como mĂłdulo
npm run example:modulo

# Teste rĂĄpido
npm test

🎯 Casos de Uso

  • ✅ Prototipagem rĂĄpida
  • ✅ Pequenas aplicaçÔes
  • ✅ Projetos de aprendizado
  • ✅ APIs serverless (Lambda, Vercel)
  • ✅ AplicaçÔes CLI
  • ✅ Sistemas de cache
  • ✅ ConfiguraçÔes persistentes

⚡ Performance

  • Inserção: O(1) - Tempo constante
  • Busca por ID: O(1) - Via Ă­ndice hash
  • Busca com filtro: O(n) - Varredura linear
  • Atualização: O(1) - Via Ă­ndice hash
  • Deleção: O(1) - Via Ă­ndice hash

🔒 Segurança

  • Validação de dados
  • Isolamento de contexto por tabela
  • Clone profundo dos dados (previne mutaçÔes)
  • Tratamento de erros

📝 Licença

MIT © 2026 JsByte


đŸ€ Contribuindo

ContribuiçÔes são bem-vindas! Sinta-se à vontade para:

  1. Fazer um Fork
  2. Criar uma branch para sua feature (git checkout -b feature/NovaFeature)
  3. Commit suas mudanças (git commit -m 'Add Nova Feature')
  4. Push para a branch (git push origin feature/NovaFeature)
  5. Abrir um Pull Request

📞 Suporte


đŸ—ș Roadmap

  • [ ] Suporte a transaçÔes
  • [ ] Sistema de backup automĂĄtico
  • [ ] Criptografia de dados
  • [ ] Sistema de permissĂ”es
  • [x] CLI Tool
  • [ ] Web Dashboard
  • [ ] Replicação de dados
  • [ ] Publicar no NPM

Desenvolvido ❀ para a comunidade Node.js