← Back to Projects
Mobile App 2025 In progress Mobile Web API

FitFund

A fitness crowdfunding platform where users run "moveathon" campaigns — tracking exercise (GPS/pedometer) to raise money for beneficiaries through per-mile pledges and flat donations. For athletes, sponsors, campaign organizers, and charitable beneficiaries.

76/76 Feedback items resolved
26 Backend tables
9 Leaderboards
?? Users
?? Campaigns
?? Funds raised

Overview

FitFund is a fitness crowdfunding platform: users run “moveathon” campaigns, tracking their exercise via GPS and pedometer to raise money for beneficiaries through per-mile pledges and flat donations. It connects athletes, sponsors, campaign organizers, and charitable beneficiaries — with real-time activity tracking, Stripe-powered sponsorship, and a full admin panel. Built as a React Native (Expo) app on a Laravel API backend.

Key Features

  • Multi-step campaign creation with athletes, sponsors, beneficiaries, and per-mile / flat pledge types.
  • Real-time activity tracking via background GPS and pedometer, feeding 9 leaderboards.
  • Stripe-powered sponsorship: per-mile pledges auto-calculated on distance, auto-payment at campaign end, and refunds.
  • Beneficiary system with approval workflow, transparency stories, followers, and QR-code campaign sharing.
  • Guest mode plus a teammate / social layer with age-gated (18+) messaging and granular push / email notification controls.
  • Filament admin dashboard for managing users, campaigns, beneficiaries, refunds, and story moderation.

Challenges & Solutions

Continuous background distance tracking survives app-switch and screen-off via expo-task-manager plus a foreground-service hand-off (working around iOS 16KB-page and motion-permission caveats).

Post-campaign pledge collection is fully automated through scheduled jobs that auto-charge saved cards at the LIVE → PROCESSING transition, including refunds and Stripe webhook handling.

A subtle production bug — publishing a transparency story made a beneficiary un-viewable — traced to an eager-loaded, non-existent Eloquent relationship; a single fix resolved a whole cluster of “beneficiary not found” errors.

Results & Impact

?? Pre-release. Add real numbers (users, campaigns, funds raised) when live.