fillblocks-client
v1.8.6
Published
A high-performance client package supporting both TypeScript and JavaScript.
Readme
fillblocks-client
A high-performance TypeScript/JavaScript client package for database synchronization and decentralized data backup to Arweave. This SDK is specifically developed to support PhilBlocks (philblocks.com) and is maintained by Cadillacs (cadillacs.in).
🎯 Purpose
This client is designed to synchronize MongoDB collections with Arweave decentralized storage, providing a robust backup and archival solution for blockchain data. It's primarily developed to serve the PhilBlocks ecosystem but will be made available to the broader community in the future.
⚠️ Current Status
This SDK is currently in active development and is not recommended for production use outside of the PhilBlocks ecosystem. While it will eventually be open-sourced for general use, it's specifically tailored for PhilBlocks requirements and may undergo significant changes during development.
🏗️ Architecture
- Database Integration: MongoDB with Mongoose ODM
- Decentralized Storage: Arweave integration for permanent data storage
- Change Detection: Intelligent diff calculation to minimize uploads
- Performance Monitoring: Built-in metrics and error tracking
- Automation: CRON job support for scheduled synchronization
🚀 Features
- 🔄 Smart Data Synchronization: Only uploads changed data
- 📊 Performance Monitoring: Memory usage, CPU time, and uptime tracking
- 🛡️ Error Handling: Comprehensive error monitoring and logging
- ⏰ Automation Ready: Built-in scheduler for regular backups
- 🔐 Secure Credentials: Local credential management
- 📦 TypeScript Support: Full TypeScript and JavaScript compatibility
📋 Prerequisites
- Node.js (v16 or higher)
- MongoDB database with Mongoose connection
- Arweave API credentials (clientKey and secretKey)
🛠️ Installation
npm install fillblocks-client⚙️ Configuration
Create a fillblock.credentials.json file in your project root:
{
"clientKey": "your-arweave-client-key",
"secretKey": "your-arweave-secret-key",
"databaseName": "your-mongodb-database-name",
"collections": [
{
"name": "your-collection-name",
"schema": {
"field1": "string",
"field2": "number"
}
}
]
}📖 Usage
import { fillblocksClient } from 'fillblocks-client';
// Run the synchronization process
await fillblocksClient();🔧 Development
# Install dependencies
npm install
# Build the project
npm run build
# Development mode with watch
npm run dev
# Start the client
npm start📊 Performance
The client provides detailed performance metrics including:
- Memory usage tracking
- CPU time monitoring
- Process uptime
- Upload success/failure rates
🤝 Contributing
While this project is primarily developed for PhilBlocks, contributions are welcome. Please ensure any changes align with the project's goals and maintain compatibility with the PhilBlocks ecosystem.
📄 License
MIT License - See LICENSE file for details.
🙏 Credits
- Author: Cadillacs - Development and maintenance
- Primary Use Case: PhilBlocks - Blockchain data synchronization
- Technology: Built with TypeScript, MongoDB, and Arweave integration
🔗 Links
- Cadillacs: https://cadillacs.in
- PhilBlocks: https://philblocks.com
- Repository: https://github.com/Cadillacs/fillblocks-client
This SDK is developed with ❤️ for the PhilBlocks community and will be open-sourced for broader adoption in the future.
