Welcome to the Crewdle Web SDK! This toolkit empowers developers to seamlessly integrate Crewdle Mist Computing Platform's cutting-edge features into web applications. Enjoy easy adoption of decentralized computing technologies for real-time data processing, secure peer-to-peer communication, and efficient data handling.
- Ease of Integration: Designed for minimal coding effort, enabling quick adoption.
- Advanced Technologies: Access to decentralized computing, enhancing security and efficiency.
- Innovation Friendly: Ideal for developing scalable, sustainable web applications.
Before diving in, ensure you have a Vendor ID and an Access Token. Register to the Crewdle Mist Developer Console if you haven't already.
npm install @crewdle/web-sdk
// Create a new SDK instance
const sdk = await SDK.getInstance('[VENDOR ID]', '[ACCESS TOKEN]');
// Authenticate a user
await sdk.authenticateUser({
id: 'userId',
displayName: 'userId',
email: 'userId@crewdle.com',
});
// Join a cluster
const cluster = await sdk.joinCluster('clusterId');
// Define the interface of the PubSub topic
interface IChatMessage {
message: string;
senderId: string;
timestamp: number;
file?: IFile;
}
interface IFile {
name: string;
type: string;
path: string;
}
// Open a PubSub topic
const topic = cluster.openPubSubTopic<IChatMessage>('chat');
// Subscribe to the topic to receive messages
topic.subscribe(ContentType.Data, (sender, message) => {
console.log(`Received message from ${sender}`, message);
});
// Publish a message to the topic
topic.publish({ message: 'Hello, world!', senderId: 'userId', timestamp: Date.now() });
// Open an object store bucket
const bucket = await cluster.openObjectStoreBucket('drive');
// List the contents of the root directory
const root = await bucket.list('/');
root.forEach((item) => {
console.log(item);
});
// Publish a file to the bucket
await bucket.publish({
action: PayloadAction.File,
file: new File(['Hello, world!'], 'hello.txt'),
});
// Define the layout of the key-value database
const layout = LayoutBuilder.layout(1);
layout
.table('table1')
.index('timestamp');
// Open a key-value database
const database = await cluster.openKeyValueDatabase('db', layout);
// Define the interface of the table
interface ITable extends IValueType {
value: string;
timestamp: number;
}
// Get the table handle
const table = database.getTable<ITable>('table1');
// Query the table
const query = QueryBuilder.index('timestamp').orderBy('desc').limit(100);
const items = await table.list(query);
items.forEach((item) => {
console.log(item);
});
// Add an item to the table
await table.add({ value: "value1", timestamp: Date.now() });
- PubSub: Real-time, scalable messaging for event-driven communication.
- Object Storage: Secure, scalable storage for unstructured data.
- Key-Value Database: Fast, efficient data storage and retrieval.
Licensed under the Crewdle SDK License Agreement.
Reach out to support@crewdle.com or raise an issue in our repository for any assistance.
For an engaging discussion about your specific use cases or to connect with fellow developers, we invite you to join our Discord community. Follow this link to become a part of our vibrant group: Join us on Discord.