Streamr Open Data Challenge: Introducing Rendevous!

Streamr Open Data Challenge: Introducing Rendevous!

Rendevous Project Overview.

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.

🐱 Read the code on GitHub

RoadMap 🗺️

  • Rendevous Marketplace

  • UI/UX Redesign and optimization

  • Rendezvous Mobile App

🌐 Website: https://rendevous.site

🐱 GitHub: https://github.com/midesofek/rendevous-data-stream

🔶 Rendezvous on Streamr Hub

Resources

Connect with me on Twitter | Linkedin | GitHub

Thank you for reading :)