project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

Moments

Host or join GPS-verified events, control and track experiences on-chain

Moments

Created At

Autonomous Worlds

Project Description

Moments is a dynamic, fully on-chain interactive experience using the MUD framework from Lattice, centered around the creation and participation in events or meetups we call "moments".

A "moment" is a user-generated event, with its unique title, description, image, and location specified by latitude and longitude. Users create moments through a simple interface and the data is stored on NFT.Storage.

The creation of a moment is an on-chain transaction representing the unique instance of that event. The owner of the moment has the power to toggle the live status of the moment, making it available or not to check into for other users. This feature is also an on-chain interaction, providing a level of control and flexibility to the users.

To access the app, users can sign up or log in using Magic Link, which provides a seamless and secure user experience. Magic Link allows users to log in using their email address, Google sign-in, or wallet, giving a range of options to suit different user preferences.

Once logged in, users can view all the live moments created by others. They can choose to check into a moment if they are within 250 meters of the specified location using GPS. This location verification is also captured on-chain, ensuring that the integrity of the 'check-in' process remains intact. If a user is not within the specified distance, they cannot check in, preserving the authenticity and exclusivity of the moment.

Only the owners of the moment can view a list of wallet addresses that have checked in to their moments. This feature offers a layer of privacy and ownership over the moments, allowing the owners to know who participated in their moments.

The project is a fusion of decentralized technology, social interaction, and location-based services.

Use Cases

  • An event organizer who plans various gatherings, like music concerts, food festivals, or tech meetups, would find Moments useful. They can create a "moment" for each event, provide all the necessary details, and make it live for others to see and join. This on-chain system would allow them to manage their events efficiently and transparently. They can also view the list of wallet addresses that have checked into their events, giving them an idea of the audience that attended.

  • A travel enthusiast who loves exploring new places and meeting new people could use this platform to find interesting "moments" happening around them. They can check into moments if they are within the specified vicinity, creating a unique on-chain record of their experiences. This would not only provide them with a novel way of documenting their journeys but also introduce them to a global community of like-minded people.

How it's Made

Frontend

  • The frontend is built with React and Material UI.

Backend/Smart Contract

  • For the backend, we used the MUD framework to create systems where there are various on-chain operations, such as creating moments, toggling the live status of moments, and recording check-ins.

Authentication

  • For user authentication, we used Magic Link. Magic Link offers a passwordless authentication system, which allows users to sign in using their email address, Google sign-in, or wallet. This not only simplified the authentication process but also enhanced the security and privacy of Moments.

Decentralized Storage

  • The data of the moments (images, title, description), are stored on NFT.Storage. This enabled us to keep all the data decentralized and lighten the storage requirements on MUD.

Location Verification

  • For location verification, we used the user's GPS data and the Geolocation API. When a user attempts to check into a moment, the application compares the user's current GPS location with the location of the moment. If the user is within 250 meters of the moment's location, the check-in is allowed and recorded on-chain. If not, the check-in is denied.

Other

  • MUD doesn’t work well with Nextjs so we had to rip it out. Even a custom webpack config didn’t work.

  • We don't give the user's position on chain, we just provide the user's wallet address on chain. We do the calculation on the client side.

GPS data isn't typically something you can or would want to put on a blockchain due to privacy concerns. So instead of storing the user's GPS data on-chain, we implemented a system where the app verifies the user's location off-chain but only records the wallet address on-chain upon success to indicate whether or not the user was within the allowed range of the moment. This way, we were able to maintain user privacy while still keeping the integrity of the location verification process.

background image mobile

Join the mailing list

Get the latest news and updates