🏃💸 Run Money

🏃💸 Run Money

Run Money is a savings game you play with friends. It merges Strava running clubs with web3 wallets for a unique "run-to-earn" experience that encourages saving money and being active.

144
Built at Onchain Summer Buildathon

The problem 🏃💸 Run Money solves

Run Money addresses the dual challenge of promoting physical fitness and financial discipline through an innovative "run-to-earn" model. In today’s fast-paced world, maintaining regular exercise routines can be challenging, and finding motivation to stay committed often leads to inconsistent workout habits.

Achieving consistent benefits from savings (compound interest) and fitness (improved longevity) requires discipline. Saving money and getting a good workout are beneficial but challenging to maintain. Why are saving money and staying fit particularly difficult for everyone?

Solution: Social and Financial Motivation, Strava + Smart Wallet

  • Encourages Consistent Physical Activity - Run Money motivates users by integrating Strava fitness tracking with financial rewards. Participants join running clubs, stake USDC, and meet specific running goals, fostering a supportive and competitive environment.
  • Promots Financial Discipline - Participants stake USDC to commit to their fitness goals. Meeting these goals allows them to reclaim their stake and earn additional rewards, combining physical and financial health.
  • Social Accountability - A slashing mechanism ensures accountability. Members who fail to meet club requirements can be slashed and their stake redistributed to compliant members.
  • Simplifying Fitness and Financial Management - Run Money seamlessly integrates with Strava for easy progress tracking. The user-friendly interface allows participants to join clubs, track performance, and manage stakes and rewards effortlessly.

Challenges we ran into

Working with the Strava API is a challenge with respect to accessing the data needed to present good views for the runners in the app. Rightly so, Strava protects users information including IDs. It makes getting all the information needed to make the application UX complete, with all the stats and assets from Strava we'd want to have.

Integrating with Strava involved using a webhook approach so a "Strava Oracle" was creating using Python Flask. It simply submits an activity onchain when Strava webhooks to it via and HTTP POST request. As users that have OAuthed Run Money App, there activities will start to be posted to the Strava Oracle which will put them onchain.

There is some math involved here to check when a runner is "noncompliant" with the clubs requirements. That's implemented in the contracts so that as soon as someone is not meeting requirements they'll lose their stake, no member intervention required. This is the game part of the application.

Creating a factory contract and increasing the scope of the UI to show a list of available clubs, allowing runners to join many clubs, is probably out of scope given we only have another week.

Getting test data is also hard, like we have to go out and do a run, then make sure the Strava Oracle is working 100% before we recorded it since we only get one test per completed run. Some IRL problems.

Tracks Applied (2)

Coinbase Smart Wallet

We use Coinbase Smart Wallet as an easy way to onboard new users without existing noncustodial wallets. Rainbowkit allow...Read More

Unplugged Track

Run Money bridges the gap between the physical and digital worlds by promoting community engagement and real-world impac...Read More

UNPLUGGED with Nouns

Cheer Project

Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.

Discussion