Inspiration

We mashed two worlds that rarely meet: the social spark of working out together and the gameful incentives of a market. Fitness apps often lose steam without friends; markets make tiny actions feel meaningful. We asked: what if meeting for a run felt like unlocking a quest reward—and you could trade that effort? That became SweatMarket.

What it does

  • Find partners: Profiles with sport, time window, and region; browse posts/offers; DM to coordinate.
  • Verify meetups: Host shows a QR, partner scans; both devices send GPS. Success if within 100 m and 120 s.
  • Earn coins: On verification, both users receive FitCoin and a wallet transaction is recorded.
    • Reward formula (Markdown + LaTeX):
      $$\text{FitCoin}=\left\lfloor\frac{t\cdot\iota}{10}\right\rfloor + 10\cdot \mathbf{1}_{\text{verified}}$$ where (t) = workout minutes, (\iota\in{1,2,3}) = intensity bucket.
  • Play the market: Lightweight DEX-style page to post buy/sell orders for FitCoin (toy economy; no real money).
  • See history: Wallet balance + transaction list.

How we built it

  • Stack: FastAPI + SQLModel/SQLite + Uvicorn, Jinja2 templates, Tailwind CSS.
  • Auth & sessions: Starlette SessionMiddleware; simple username/password.
  • Data model: users (coins), txs (wallet ledger), orders (orderbook), plus posts, comments, chat_rooms, messages.
  • Endpoints: /signup, /login, /wallet, /dex (+ /dex/new), and / landing.
  • Demo mode for speed: Toggle via SWEATMARKET_DEMO=1 or ?demo=1 to seed fake orders and wallet so UI works even when other modules are unfinished. Soft-imports prevent crashes while teammates iterate.

Challenges we ran into

  • Concurrency & merges: Multiple people touching templates/models → conflicts. We used frequent rebases, one-owner policy for shared files, and small PRs.
  • Schema churn: Adding users.coins mid-sprint required a tiny migration or dev DB reset.
  • Anti-cheat vs. simplicity: Balanced realism with QR + 100 m geofence instead of heavy sensor attestation.
  • Scope control: Built a post-only orderbook (no matching engine) to hit the 12-hour MVP.

Accomplishments that we're proud of

  • End-to-end meet → verify → earn → trade loop shipped within the hackathon window.
  • Demo mode kept momentum when other parts weren’t ready.
  • Clean, responsive UI with a sticky header and consistent context (passing user into base.html).
  • QR + geo verification that feels real without complexity.

What we learned

  • Decoupled modules win hackathons. Feature flags and demo data unblock UI/UX early.
  • Pass context early (e.g., user into base.html) to prevent template drift.
  • Keep tiny migrations or be ready to recreate SQLite locally.
  • Rebase + --force-with-lease and clear ownership make teamwork smooth.

What's next for Sweat Market

  • Swipe-style matching by sport/time/region and availability.
  • HealthKit/Google Fit integrations for stronger proof-of-workout.
  • Streaks, seasons, leaderboards with decay/bonus mechanics.
  • Stronger anti-cheat: Bluetooth co-presence, timed photo prompts.
  • Market upgrades: Simple matching/clearing; badges purchasable with FitCoin.
  • PWA & push notifications for nearby offers and streak reminders.

Built With

Share this project:

Updates