Even in quarantine, choosing what to do with friends is close to impossible. If one person likes a restaurant, another does not and the friend group rotates around the same activities or locations, bored out of their minds. With our app, that problem would not exist.
XAIV essentially acts as a Tinder but for activities for when you cannot decide or do not know where to go. It allows you to make a secure profile using two-factor authentication and create a group with other users of the app. From there, you determine an activity, general region, and range to determine all the locations in the area that are available to visit. You can choose to swipe right if you like the location and left if you do not. As all the members make their choices anonymously, one location will be determined by consensus.
Users will be able to post about this on their feed easily and even make comments to review their time and experience at the location. We also have a calendar feature so that users with many groups and sessions can keep track of their activities and where and when it will be taking place. With our app, decisions are made easier and quicker with a swipe of your finger.
The app can be broken into two parts. The first is the core "decision making helper" functionality. Users can create a profile, add their friends to a group, and poll the Google Places API freely, swiping as a group until they come to as many agreements as they like. None of this requires the use of a blockchain; instead, it uses a regular back-end server and database. However, Solana is a key part of the rest of the app. We aim to tokenize data by-products from casual user interactions with the app, and store them, aggregated and anonymously, on the blockchain. Each action taken by a user - any user - is sent to the blockchain as a micro-event with a timestamp. This currently includes only swipe events, but will later be expanded to more events. With all these events, a chronological history of user events is transparently built and maintained
Why is this important? The hope of this is to generate meaningful and trustless data aggregates, while also being transparent about privacy to our users. You could think of it as Yelp alternative, where instead of writing formal reviews and explicitly rating restaurants (among other things), data is collected much more casually, and anonymously, from users simply using the group decision making portion of the app. Users are incentivized to provide this data, thanks to the app offering them a useful service free of charge. They also won't have any concerns regarding privacy - none of the data is tied to them personally, and, most importantly, they can see that (on the blockchain). It also reduces (or arguably, eliminates) the need to trust us as a centralized organization providing the data, since each data point is permanently stored on a public ledger (with timestamps). The code and platform can easily be audited to verify that all user interactions successfully make it onto the blockchain. Third parties can see the data being built in real time, leaving any room for doubt regarding its validity or possible tampering. Also, any event from another user (pinged to the blockchain up, and ponged back on request) is shown on the home page of our app as a live feed, like Venmo does. This helps promote a social atmosphere for our users.
Like any hackathon project, the app is quite rushed. When testing it out, please interpret any malfunctions or empty pages with a grain of salt :). The core group decision making functionality works, and the app makes (a currently simplistic) use of the blockchain to store data. Blockchain programming was a new experience for us, and getting even a basic application to work within the time constraints has been difficult. Ideally, with more time, we'd expand our implementation of Solana to be necessary and meaningful. This isn't the first "decider" app anyone's ever made, but the way we intend to store and make use of its data by-products is unprecedented. Hopefully, what we've programmed so far using Solana serves as a convincing proof of concept, if nothing else.
- Go to
https://expo.io/@soukaryag/projects/xaiv
- Scan the QR code with your iOS or Android device, alternatively use the
Open project in the browser
option - Welcome to Xaiv, have fun!
- Clone the repository to your local machine
git clone https://github.com/soukaryag/xaiv.git
- Continue to the client folder
cd xaiv/xaiv-react-client
- Run
yarn install
to install all dependencies and setup the client environment - Run
yarn start
to spin up a local instance - Visit
http://localhost:19002/
in your browser and choose toRun in web browser
- This app is best viewed in mobile view, you can do this by using
Ctrl+Shift+I
to access the web console and click the mobile icon on the top right on the console.
- This app is best viewed in mobile view, you can do this by using
- Welcome to Xaiv, have fun!
If you are having trouble, please contact us! Thanks.
- Basic account system with signup and login
- Add other users as friends
- Create groups with friends
- Start real time sessions to decide on an activity with a group
- Look back on past sessions and decisions
- View most popular swiped location on the home feed, tracked via Solana
- Settings screen for topic selection
- Select specific location, radius, list of more topics, etc.
- Group messaging system
- Calendar showing upcoming decided events
-
Functionality:
-
Essential:
- Local App functionality:
Add friends CHECKCreate a group CHECKChoose a topic / start a group session CHECKPopulate session pool on the backend CHECKConclude group session / show users consensuses achievedMake card data length dyanmic based on number of activities- Change group_name as query to a unique group id
Some kind of loader to prevent double sends
- Solana:
Get it to actually workRerun compile source code for swipe leftRecord consensus eventHome page displays blockchain events in real time
- Other:
Get the app to actually work on mobileDeploy backend to heroku and update endpoints accordingly
- Local App functionality:
-
Good to have:
-
-
Style:
- Essential:
- Decide page:
activeand inactive group listings - Topic page
- Decide page:
- Good to have:
Swipe page improvements
- Essential:
push to heroku: git subtree push --prefix backend heroku master
after staging and commiting changes