Host or join GPS-verified events, control and track experiences on-chain
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.
Frontend
Backend/Smart Contract
Authentication
Decentralized Storage
Location Verification
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.