Inspiration
Our inspiration for Destifi comes from the Gacha game concept where users curate a personal collection of rare digital items. After experiencing the potential of Gacha ourselves, we decided to apply this concept to the real world to incentivize people to get out of the house and collect meaningful, real experiences. Ironically, although technology is the cause of our chronic online usage, we believe it is the best medium to foster off-the-grid connections.
What it does
Destifi is a travel app integrating web3 wallets that aims to incentivize sightseeing and traveling for the average person. Using the play-to-earn model, users can earn souvenirs for each location they visit. Depending on the amount of souvenirs a user has, they can earn special statuses ("Elite Traveler" which they can use to gain real world benefits like local sponsorships and travel rewards. The game aspect of Destifi comes from the randomly generated location rarities based on the proximity between the user's current location and the desired destination. The closer a user is to a certain location, the higher probability the user has to "roll" that location.
Additionally, the destination generator feature has a cooldown of 24 hours, meaning users have the opportunity to generate, visit, and roll-souvenirs for up to 3 unique locations per day.
How we built it
Before programming the actual application, we performed preliminary development practices including prototyping designs on Figma, brainstorming on Notion, and modeling schemas on Excel.
For Destifi's tech stack, we decided to use Ruby-on-Rails for our backend, a SQLite3 database, and a React Native Frontend. We built a Ruby MVC mobile app by relinking our React Native Frontend to the ruby controller. We chose a SQLite3 database to efficiently build a relational database schema. Through paired programming and git version control, we effectively created an app that allows users to get off the grid.
Challenges we ran into
Considering this hackathon was the first time many of us used languages like Ruby and React Native, we faced many challenges which, albeit frustrating, helped us grow immensely. For the backend, our problems mostly dealt with Networking and establishing GET-POST-DELETE fetches to Ruby endpoints. Ruby-on-rails is specifically designed around .ejs and HTML, so connecting React Native with it (added difficulty since it was a mobile app) caused difficulties in navigating around Invalid Authentication Tokens, CORS errors, and syntactic shortcuts. For the frontend, we ran into the obstacle of understanding React Native's Navigator, working with a new framework on a new development platform, and linking frontend components with the correct ruby controller.
Accomplishments that we're proud of
Tackling Ruby-on-Rails and React-Native are already really daunting tasks, so just being able to create a functional mobile app is an accomplishment in the books for us. Additionally, we are all proud at how we persevered through the arduous debugging. There were a couple of 4-hour-long bugs here and there, but we still managed!
What we learned
On the technical side, we learned how to use a ruby on rails backend to build a cross-platform mobile app with minimal prior experience using the ruby language and the RubyMine IDE.
However, although we gained many tangible technical skills in our efforts to learn new programming languages this weekend, the most important takeaways were related to our mindset during the project. Throughout the weekend, we were able to appreciate the value of paired programming, taking a break, and having fun—recognizing these experiences are what make hackathons unique and so rewarding.
What's next for Destifi
Startup :D
We truly believe in the potential of Destifi and are inspired to continue developing and perfecting the concept within the realm of web3. More features such as NFTs, broad community platforms, real-life rewards, and so much more are yet to come.
Built With
- css
- excalidraw
- figma
- javascript
- networking
- notion
- react-native
- ruby-on-rails
- sqlite
- typescript
Log in or sign up for Devpost to join the conversation.