A modern, lightweight, and type-safe JSON document database with built-in schema validation, encryption, and caching capabilities.
Flow.db is a robust, developer-friendly document database designed for modern Node.js applications. It provides a seamless experience for storing and managing JSON data with advanced features like schema validation, encryption, and automatic backups.
- 🔒 Built-in Encryption: Secure your data with AES encryption
- ✨ Schema Validation: Ensure data integrity with JSON schema validation
- 💾 Automatic Backups: Configurable backup system with retention policies
- 🚀 Performance: In-memory caching for fast data access
- 🔍 Rich Querying: Powerful array operations and predicate-based searches
- 📝 Type Safety: Full TypeScript support with comprehensive type definitions
- 🛠️ Developer Experience: Simple API with intuitive methods
npm install flow.dbimport { Database } from 'flow.db';
// Initialize database with options
const db = new Database({
path: '.flow',
encryption: true,
encryptionKey: 'your-secure-key',
autoBackup: true,
schemaValidation: true
});
// Define a schema
const userSchema = {
type: 'object',
properties: {
id: { type: 'number' },
name: { type: 'string' },
email: { type: 'string' }
},
required: ['id', 'name']
};
// Store data
db.set('users', [
{ id: 1, name: 'John Doe', email: 'john@example.com' }
]);
// Query data
const users = db.find('users', user => user.id === 1);
// Update data
db.update('users',
user => user.id === 1,
user => ({ ...user, name: 'John Smith' })
);set(key, value): Store or update dataget(key): Retrieve datadelete(key): Remove datafind(collection, predicate): Search for items
push(key, value): Add items to an arraypull(key, predicate): Remove items from an arrayupdate(key, predicate, updateFn): Update array items
const isValid = db.validateSchema(data, schema);| Option | Type | Default | Description |
|---|---|---|---|
| path | string | '.flow' | Database directory path |
| encryption | boolean | false | Enable data encryption |
| encryptionKey | string | undefined | Encryption key (required if encryption is true) |
| autoBackup | boolean | false | Enable automatic backups |
| backupInterval | number | 3600 | Backup interval in seconds |
| schemaValidation | boolean | false | Enable schema validation |
flow.db/
├── src/
│ ├── core/ # Core database functionality
│ ├── operations/ # CRUD and array operations
│ ├── utils/ # Utility functions
│ └── types.ts # TypeScript type definitions
├── examples/ # Usage examples
└── __tests__/ # Test suites
We welcome contributions! Please see our Contributing Guidelines for details.
This project is licensed under the MIT License - see the LICENSE file for details.
Special thanks to all contributors who have helped make Flow.db better.
