What is Rendevous?
Rendevous is a position-data streaming application powered by Streamr Network, that lets users stream their position data privately between friends, family and colleagues or in a real-time data marketplace for reward incentives.
"rendezvous - a meeting at an agreed time and place"
From the denotative meaning of the word, Rendezvous is focused on providing individuals with a platform to make objective decisions based on real-time data.
Features
At its core, Rendevous has 2 major features:
Private live position sharing - made possible with Stream Private Streams
A Real-time Position data marketplace - an integration of Stream Permissions, smart contracts and tokenization.
With Rendevous, users can create/join streams and share their position data exclusively with subscribers to the stream.
Current Walkthrough
The user connects to the Polygon Blockchain Network
Enters a StreamId
Joins the Stream (to receive data)
Publishes Data (only accessible by users with stipulated permission)
Subscribers receive a message when a new user joins the stream and can see the user’s position on the map.
Next Phase…
The next phase of Rendevous is aimed at taking position data sharing to a new level.
The Rendevous Marketplace (currently undergoing development) integrates stream permissions, tokenization and Smart Contracts to provide incentives to users willing to share position data with advertisers/event organizers ready to use this data for real-time market analysis.
How Rendevous Uses Streamr
Rendevous leverages the Streamr Client to power its fundamental architecture - to "Publish" and "Subscribe" to data. This is powered by the `publish
` and subscribe
methods provided by Streamr.
Rendevous further uses the metadata
provided by the subscribe
method to provide subscribers with additional information (e.g. publisher address and timestamp)
client.subscribe(id, (data, metadata) => {
const timeReceived = new Date(metadata.timestamp).toISOString();
const publisher = metadata.publisherId;
//////////////// code ///////////////
}
Additionally, Rendevous utilizes Streamr Storage (i.e. STREAMR_STORAGE_NODE_GERMANY
) to enable stream subscribers to access data published minutes before their subscription (30 minutes by default).
// adding storage to stream
const handleStorage = async () => {
const storeStreams = await client.addStreamToStorageNode(
streamId,
STREAMR_STORAGE_NODE_GERMANY
);
//////////////// code ///////////////
};
// fetching data published within the last 30 minutes
async function resendPreviousMessages(id) {
client.resend(
id,
{
from: {
timestamp: Date.now() - 1000 * 60 * 30, // 30 minutes ago
},
},
(data, metadata) => {
//////////////// code ///////////////
}
);
}
Technologies Used
Backend
Streamr-Client
Streamr-Storage
Random-User API
Ethers library
NodeJs
Frontend
NextJs
Leaflet
Data Decay Avoidance Mechanism
Rendevous utilizes the watchPosition()
method on the Geolocation browser API to regularly update a user’s position in the data stream.
To ensure constant availability of data samples, Rendevous runs a node server that publishes sample user-position data to its default public stream at a 5-minute interval.
RoadMap 🗺️
Rendevous Marketplace
UI/UX Redesign and optimization
Rendezvous Mobile App
Live Links
🌐 Website: https://rendevous.site
🐱 GitHub: https://github.com/midesofek/rendevous-data-stream
Resources
Connect with me on Twitter | Linkedin | GitHub
Thank you for reading :)